Ho una domanda di base su Scansione indice/Ricerca. La scansione indice è efficace quando è presente un numero elevato di righe da recuperare. Questo è il costo della scansione dell'indice inversamente proporzionale al numero di righe restituite. Questo è meno il numero di righe più costose della query diventa come deve scansionare tutte le pagine che si traduce in più IO.Perché una ricerca indice diventa più costosa di una scansione indice
Ho cercato il motivo per cui le ricerche diventano più costose delle scansioni ma non sono in grado di ottenere il motivo per cui la ricerca diventa costosa.
Ciò che mi confonde è con Ricerca indice. Perché la ricerca indice diventa costosa con più numero di righe restituite. La ricerca dell'indice sarà sempre più veloce ed efficiente delle scansioni poiché tocca direttamente le pagine che contengono le righe. Quindi, anche con un numero elevato di righe restituite, la ricerca dell'indice dovrebbe sempre essere efficace rispetto alla scansione dell'indice. Ma questo non succede. Voglio sapere esattamente perché a un certo punto la ricerca diventa costosa.
select id,name,col1,col2
from TableA -- Will result in index scan. Table has 10000 rows with clustered index on ID column. Query has covering index.
select id,name,col1,col2
where ID between 1 and 10
from TableA -- Optimizer Will use index Seek.
Ora, perché fa la domanda sotto diventa costoso quando Index Seek è costretto su -
select id,name,col1,col2
from TableA with (forceseek)
potrebbe essere [questo] (http://blog.sqlauthority.com/2007/03/30/sql-server-index-seek-vs-index-scan-table-scan/) aiuta !!! – Praveen
L'overhead di qualifica della ricerca potrebbe essere la causa – Ian
Cosa è contenuto nell'indice? Solo l'ID? È un indice cluster? In caso contrario, la ricerca della chiave richiesta per ottenere le altre colonne sarà la ragione del successo in termini di prestazioni. – strickt01