- Here is a good article che va oltre cerca e scansioni (e indici in generale). Sarà probabilmente fare un lavoro migliore di qualsiasi post SO .
- Può essere un po 'un modulo artistico determinare se è necessario un indice oppure no. Se questi 88 cerca prendere le query assolutamente indispensabili di report da un runtime di 3 ore fino a 30 secondi, quindi conservarle. Penso che il primo passo sarebbe quello di capire quali query li stanno utilizzando, quanto gli indici aiutano quelle query e quanto sono importanti tali query.
snipit dall'articolo (sicuramente dare una lettura però):
Scansioni
un indice di scansione è una lettura completa di tutte le pagine foglia dell'indice. Quando si esegue una scansione dell'indice sull'indice cluster, si tratta di una scansione della tabella in tutto tranne il nome.
Quando l'analisi di query viene eseguita dal processore di query, è sempre una lettura completa di tutte le pagine foglia nell'indice, indipendentemente dal fatto che vengano restituite tutte le righe. Non è mai una scansione parziale.
Una scansione non riguarda solo la lettura dei livelli foglia dell'indice, anche le pagine di livello superiore vengono lette come parte dell'indice di scansione.
cerca
Un indice cercano è un'operazione in cui SQL utilizza la struttura b-tree per individuare un valore specifico o l'inizio di un intervallo di valori. Affinché un indice possa essere possibile, deve esserci un predicato SARGable3 specificato nella query e un indice di corrispondenza (o parzialmente corrispondente). Un indice di corrispondenza è uno in cui il predicato della query ha utilizzato un sottoinsieme a sinistra delle colonne dell'indice. Questo sarà esaminato in modo molto più dettagliato in una parte 3 di questa serie.
L'operazione di ricerca viene valutata a partire dalla pagina principale. Utilizzando le righe nella pagina principale, il processore di query individuerà quale pagina nel successivo livello inferiore dell'indice contiene la prima riga che si sta cercando. Quindi leggerà quella pagina. Se questo è il livello foglia dell'indice, la ricerca finisce lì. Se non è la foglia, il processore di query identifica nuovamente quale pagina nel successivo livello inferiore contiene il valore specificato. Questo processo continua fino al raggiungimento del livello foglia.
Una volta che il processore di query ha individuato la pagina foglia contenente il valore della chiave specificato o l'inizio dell'intervallo specificato di valori chiave, esso viene letto lungo le pagine foglia finché non sono state restituite tutte le righe corrispondenti al predicato.
fonte
2010-08-31 17:42:17