Un INDICE NONCLUSTERATO non utilizzato può ancora migliorare la velocità delle query?


13

Questa è una situazione strana, ma spero che qualcuno abbia una risposta.

Durante la risoluzione dei problemi relativi alle prestazioni, abbiamo aggiunto un INDICE NONCLUSTERATO a una tabella, come richiesto da sp_BlitzIndex. Abbiamo verificato il suo utilizzo il giorno successivo e ha mostrato 0 letture ( 0 scansioni / ricerche, 0 ricerche singleton ), quindi l'abbiamo disabilitato.

Il minuto successivo, riceviamo un reclamo per la stessa lentezza dell'app (problemi di prestazioni) che stavamo provando a verificare e risolvere in primo luogo quando abbiamo aggiunto l'INDICE.

Ora, lo so in teoria, questo sembra puramente casuale. L'INDICE è stato dimostrato, misurabile, NON UTILIZZATO . La disabilitazione NON DOVREBBE aver causato il degrado delle prestazioni della query. Ma è quasi troppo casuale.

Domanda

Quindi la mia domanda, abbastanza semplicemente, è quindi:

È assolutamente possibile che un INDICE NON ESCLUSIVO, le cui statistiche di utilizzo (dai DMV / sp_BlitzIndex) non mostrano alcun utilizzo, abbia comunque aiutato in qualche modo le prestazioni delle query sulla tabella interessata?


PS: Per favore, risparmiami il proverbiale "Vai a provarlo!" risposta; Devo aspettare fino a domani per testarlo perché la tabella è molto utilizzata e l'indice non verrà riattivato (ricostruito) fino alla finestra di manutenzione notturna. E la natura dei problemi di performance è stata sporadica e difficile da riprodurre comunque; Non sto dicendo "No, non lo metterò alla prova", sto dicendo che so che dobbiamo testarlo e pianificarlo, ma sto chiedendo teoria e / o conoscenza esperienziale.
NateJ,

1
Potresti trovare utile questo post sul blog; brentozar.com/archive/2016/11/…
Rich Benner

Risposte:


13

Sì, quando SQL Server decide che le statistiche di quell'indice sono più accurate / utili e utilizza tali statistiche per fare le stime e elaborare un piano.

Mi sono imbattuto in situazioni in cui SQL Server ha deciso di utilizzare le statistiche da un indice e scansionare / cercare un altro indice.

Modifica: questo potrebbe non essere applicabile perché mi sono appena reso conto che hai disabilitato l'indice. Non ho testato quello scenario.


Grazie per la risposta chiara e concisa! Sì no, non è stato disattivato immediatamente, è stato abilitato e completamente "attivo" fino a quando non l'ho disabilitato pochi secondi prima del reclamo dell'utente / rallentamento delle prestazioni. Stai bene :)
NateJ,

1
@NateJ Questa teoria può essere testata al CREATE STATISTICSposto di CREATE INDEX.
Jakub Kania,
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.