it-swarm.it

Come sapere quando / se ho troppi indici?

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% ...").

Secondo la mia comprensione, ogni indice aggiunto può rendere più veloce una query SQL SELECT ma anche una query UPDATE o INSERT 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.

27
Uwe Keim

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 carico è OLAP uno, 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 per qualsiasi domanda.

  • Un frequente DELETE, UPDATE o INSERT mostra un piano di query che comporta diverse costose modifiche all'indice (ad esempio un indice non cluster insert , pdate o delete ) . 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.

24
Nick Chammas

Se si dispone di indici che vengono mantenuti ma non vengono mai utilizzati (o utilizzati raramente), sono presenti troppi indici. Se tutti gli indici vengono utilizzati per migliorare le prestazioni degli utenti, non ne hai troppi.

8
mrdenny