¿Puede un ÍNDICE NO CLUSTRADO sin usar todavía mejorar la velocidad de consulta?


13

Esta es una situación extraña, pero espero que alguien tenga una respuesta.

Durante la resolución de problemas de rendimiento, agregamos un ÍNDICE NO CLUSTRADO a una tabla, según lo solicitado por sp_BlitzIndex. Verificamos su uso al día siguiente, y mostró 0 lecturas ( 0 escaneos / búsquedas, 0 búsquedas simples ), por lo que lo deshabilitamos.

Al minuto siguiente, recibimos una queja de la misma lentitud de la aplicación (problemas de rendimiento) que estábamos tratando de verificar y resolver en primer lugar cuando agregamos el ÍNDICE.

Ahora, lo sé en teoría, esto suena pura coincidencia. El ÍNDICE fue demostrable, medible, NO UTILIZADO . Deshabilitarlo NO DEBE haber causado la degradación del rendimiento de la consulta. Pero es casi DEMASIADO casual.

Pregunta

Entonces mi pregunta, simplemente, es así:

¿Es posible que un ÍNDICE NO AGRUPADO, cuyas estadísticas de uso (de los DMV / sp_BlitzIndex) muestran NO uso, todavía hayan estado ayudando de alguna manera al rendimiento de la consulta en la tabla afectada?


PD: Por favor, perdóname el proverbial "¡Ve a probarlo!" respuesta; Tengo que esperar hasta mañana para probarlo porque la tabla se usa mucho y el índice no se volverá a habilitar (volver a construir) hasta la ventana de mantenimiento nocturno. Y la naturaleza de los problemas de rendimiento ha sido esporádica y difícil de reproducir de todos modos; No digo "No, no lo probaré", digo que sé que tenemos que probarlo y planearlo, pero pido teoría y / o conocimiento experimental.
NateJ

1
Es posible que encuentre útil esta publicación de blog; brentozar.com/archive/2016/11/…
Rich Benner

Respuestas:


13

Sí, podría hacerlo, cuando SQL Server decide que las estadísticas de ese índice son más precisas / útiles y usa esas estadísticas para hacer las estimaciones y elaborar un plan.

Me he encontrado con situaciones en las que SQL Server ha decidido usar estadísticas de un índice y escanear / buscar otro índice.

Editar: esto podría no ser aplicable porque me acabo de dar cuenta de que ha deshabilitado el índice. No he probado ese escenario.


¡Gracias por la respuesta clara y concisa! Sí, no, no se desactivó de inmediato, se habilitó y estuvo completamente "en vivo" hasta que lo desactivé segundos antes de la desaceleración de la queja / rendimiento del usuario. Estás bien :)
NateJ

1
@NateJ Esa teoría puede ser probada en CREATE STATISTICSlugar de CREATE INDEX.
Jakub Kania
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.