Strumenti per identificare gli indici necessari


8

Voglio creare i migliori indici per ogni tabella nel mio database. Esiste una query o uno strumento in SQL Server per facilitare questo processo?


1
Ci sono indici suggeriti, ma questi sono molto limitati e dovrebbero comunque essere valutati da qualcuno che sa cosa stanno facendo. Hai una domanda specifica sull'indicizzazione?
JNK,

1
Esiste una query / tabella con prestazioni scarse? Come suggerito da JNK, dovresti davvero aggiungere indici solo quando sai cosa stai facendo (e testarlo indipendentemente). A meno che tu non abbia motivo di credere che una tabella abbia bisogno di un indice (tabella enorme, query lente, un indice cluster evidente) non dovresti semplicemente provare ad aggiungerli
Ben Brocka,

Risposte:


10

Sì, ci sono strumenti come il consulente per l'ottimizzazione del motore di database. Viene fornito con SQL Server e fa alcune cose piuttosto brutte:

  • Ti consente di considerare solo un carico di lavoro molto piccolo (anche una singola query). Il che suggerirà quindi indici che possono aiutare solo quel piccolo carico di lavoro, indipendentemente dal resto del carico di lavoro (gli indici aiutano ad accelerare alcune query, ma possono rallentare altre, in particolare inserire / aggiornare / eliminare), non importa il resto del ciclo economico.
  • Raccomanderà spesso indici ridondanti che differiscono solo per una colonna finale o per una colonna inclusa.
  • Mi piacciono molto le colonne incluse - penso che possa essere un feticcio.

L'approccio corretto all'indicizzazione dell'indice è quello di considerare l'intero carico di lavoro su un ciclo aziendale completo. A volte è meglio rivolgersi a strumenti di terze parti piuttosto che reinventare la ruota. DBSophic rende un prodotto gratuito chiamato Qure Workload Analyzer che penso faccia un lavoro molto migliore rispetto a DTA, ma il loro strumento con licenza (Qure Workload Optimizer) è assolutamente fenomenale in ciò che fa. L'anno scorso ho scritto un blog su come funziona lo strumento quando integrato con SQL Sentry ).

Ci sono anche altre opzioni, ad esempio gli indici mancanti sono riportati nei DMV e puoi anche scoprire su quali indici vengono scritti (quindi occupano spazio e influiscono sulle operazioni di inserimento / aggiornamento / eliminazione) ma mai (o raramente ) utilizzato dalle query degli utenti:

Ma questi hanno anche bisogno di avvertire che i DMV sono validi solo dall'ultimo riavvio di SQL Server e che non copriranno necessariamente un corretto ciclo economico (e quindi potrebbero mancare informazioni vitali


7

Lo strumento di cui stai parlando si chiama Database Engine Tuning Advisor (abbreviato DTA). Può richiedere una serie di input e fornire consigli su cose come gli indici mancanti. Vale la pena notare, tuttavia, che questi sono solo suggerimenti e un'attenta considerazione dovrebbe essere presa invece di seguire ciecamente le raccomandazioni del DTA.

Link per tutorial DTA

Vale anche la pena notare che ci sono DMV integrati per la raccolta di quel tipo di informazioni:

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.