Come sapere quando / se ho troppi indici?


26

Eseguendo Microsoft SQL Server Profiler di tanto in tanto, mi viene in mente un sacco di nuovi indici e statistiche da creare ("... miglioramento stimato del 97% ...").

Dalla mia comprensione, ogni indice aggiunto può rendere SELECTpiù veloce una query SQL ma anche una query UPDATEo INSERTpiù lentamente poiché gli indici devono essere regolati.

Quello che mi chiedo è quando ho "troppi" indici / statistiche?

Forse non c'è una risposta chiara su questo, ma qualche regola empirica.



Grazie, @Nick. Ho cercato attentamente Google e dba.se.com prima di pubblicare la mia domanda. A mio avviso, questo è piuttosto indipendente. Non voglio sapere se è richiesto un indice, ma piuttosto come determinare quando troppi indici fanno UPDATEe le INSERTdichiarazioni sono troppo lente.
Uwe Keim,

3
Hai letto le risposte lì? La risposta accettata, ad esempio, si collega ad alcuni script di analisi che possono aiutare a identificare gli indici inutilizzati che dovrebbero essere rimossi. Potresti trovare utile rispondere alla tua domanda su quando hai "troppi" indici.
Nick Chammas,

Risposte:


24

Il tuo profilo di carico è il fattore più importante per rispondere a questa domanda.

  • Se il carico è ad alta intensità di lettura, si desidera che gli indici soddisfino le query più pesanti o più frequenti.

  • Se il carico è ad alta intensità di scrittura, indicizzalo attentamente. Indice per soddisfare una ricerca di cui ha bisogno un AGGIORNAMENTO, ad esempio, nonché uno o due SELECT più costosi.

  • Se il tuo carico è OLAP, indicizzalo con parsimonia poiché eseguirai comunque la scansione delle tabelle di destinazione.

Come fai a sapere che hai troppi indici?

  • Quando vedi che alcuni di essi non vengono utilizzati da nessuna query.

  • Un DELETE, UPDATE o INSERISCI mostra un piano di query frequente che coinvolge più costose modifiche di indice (cioè un cluster indice di inserimento , aggiornamento o eliminazione ). Usa il tuo giudizio per determinare se la penalità su quelle dichiarazioni DML vale il guadagno che stai ottenendo dagli indici che devono essere aggiornati.


8

Se si dispone di indici che vengono mantenuti ma non vengono mai utilizzati (o utilizzati raramente), è necessario utilizzare molti indici. Se tutti gli indici vengono utilizzati per migliorare le prestazioni degli utenti, non è necessario per molti.


Posso suggerire di cambiare le due occorrenze di " da " a " troppo ", dal momento che non posso modificarle poiché la mia modifica dovrebbe cambiare almeno 6 caratteri?
Uwe Keim,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.