Tenemos una base de datos muy grande con cientos de índices no utilizados según las estadísticas del DMV, que se han acumulado desde la última vez que se reinició el servidor en julio. Uno de nuestros DBA hizo las siguientes declaraciones de advertencia, que no tienen sentido para mí:
- Antes de eliminar un índice, debemos asegurarnos de que no imponga una restricción de unicidad, ya que el optimizador de consultas puede necesitar que este índice exista.
- Cada vez que se crea un índice, las estadísticas relacionadas con ese índice también se crean en SQL Server. Es posible que una consulta no esté usando el índice, pero podría estar usando sus estadísticas. Por lo tanto, podemos encontrarnos con una situación, después de soltar un índice, el rendimiento de una consulta en particular va realmente mal. SQL Server no mantiene las estadísticas de uso de las estadísticas. Aunque tenemos habilitada la función "Crear estadísticas automáticamente" en nuestra base de datos, no sé qué parámetros deben cumplirse internamente antes de que el optimizador de consultas cree las estadísticas que faltan.
Con respecto al n. ° 1, me parece que SQL Server realmente buscará en el índice para determinar la unicidad antes de que se realice una inserción / actualización y, por lo tanto, el índice no se mostrará como no utilizado.
Con respecto al n. ° 2, ¿es esto realmente posible?
Por cierto, cuando digo que no se usa un índice, quiero decir que no hay búsquedas ni escaneos.