Sto cercando di saperne di più sull'operatore del piano di query "Controllo riferimenti a chiave esterna" introdotto in SQL Server 2016. Non ci sono molte informazioni al riguardo. Microsoft l'ha annunciato qui e ne ho fatto un blog qui . Il nuovo operatore può essere visualizzato eliminando una riga da una tabella padre con 254 o più riferimenti di chiave esterna in entrata: collegamento dbfiddle .
Esistono tre diversi conteggi visualizzati nei dettagli dell'operatore:
- Riferimenti di chiave esterna Conteggio è il numero di chiavi esterne in entrata.
- Nessun conteggio di indici corrispondente corrisponde al numero di chiavi esterne in entrata senza un indice adatto. La verifica che la tabella aggiornata o eliminata non violi tale vincolo richiederà una scansione di una tabella figlio.
- Non so cosa rappresenti il conteggio degli indici di corrispondenza parziale .
Che cos'è un indice di corrispondenza parziale in questo contesto? Non sono riuscito a ottenere nessuna delle seguenti funzioni:
- Indici filtrati
- Inserimento della colonna chiave esterna come
INCLUDE
colonna per un indice - Indici con la colonna chiave esterna come seconda colonna chiave
- Indici a colonna singola per chiavi esterne a più colonne
- Creazione di più indici di copertura per abilitare un piano di "join indice" per una chiave esterna a più colonne
Dan Guzman ha sottolineato che le chiavi esterne a più colonne possono corrispondere agli indici anche se le chiavi dell'indice sono in un ordine diverso rispetto alle colonne della chiave esterna. Il suo codice è qui nel caso in cui qualcuno sia in grado di usarlo come punto di partenza per capire di più sugli indici di corrispondenza parziale.