Salve esperti del motore SQL Server; per favore condividi con noi un po 'del tuo approfondimento ...Prestazioni del server SQL: indice non cluster + colonne INCLUDE rispetto a indice cluster - equivalente?
A quanto ho capito, le colonne INCLUDE su un indice non in cluster consentono di memorizzare dati non chiave aggiuntivi con le pagine indice.
Sono ben consapevole dei vantaggi in termini di prestazioni che un indice cluster ha su un indice non in cluster semplicemente a causa del 1 passo in meno che il motore deve eseguire in un recupero per arrivare ai dati sul disco.
Tuttavia, poiché le colonne INCLUDE risiedono in un indice non cluster, è possibile che la seguente query abbia essenzialmente le stesse prestazioni tra gli scenari 1 e 2 poiché è possibile recuperare tutte le colonne dalle pagine indice nello scenario 2 anziché mai ricorrere alle pagine di dati della tabella?
QUERY
SELECT A, B, C FROM TBL ORDER BY A
SCENARIO 1
CREATE CLUSTERED INDEX IX1 ON TBL (A, B, C);
SCENARIO 2
CREATED NONCLUSTERED INDEX IX1 ON TBL (A) INCLUDE (B, C);
Che cosa dice il piano di query effettivo quando si passa da un setup di indice all'altro? –
dipenderà dal carico di lavoro complessivo della query che colpisce quella tabella. –
È interessante notare che l'indice non cluster è preferito nel piano di query, ma la possibilità di utilizzare suggerimenti di query, la complessità del motore nel decidere un piano di query ottimale basato sul volume di dati e chissà quali altri fattori lasciano per me un mistero persistente. Sto davvero cercando qualcuno che parli e dica INCLUDE che le colonne non sono tutto ciò che sono incrinate per un motivo o per un altro ... – Tahbaza