Voglio creare i migliori indici per ogni tabella nel mio database. Esiste una query o uno strumento in SQL Server per facilitare questo processo?
Voglio creare i migliori indici per ogni tabella nel mio database. Esiste una query o uno strumento in SQL Server per facilitare questo processo?
Risposte:
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:
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
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.
Vale anche la pena notare che ci sono DMV integrati per la raccolta di quel tipo di informazioni: