Tengo algunas tablas antiguas con, lo que creo, son índices casi sin valor. ¿Cómo puedo estar seguro de que nunca se utilizarán antes de que los deje caer?cómo saber si se usa un índice alguna vez
10
A
Respuesta
4
Eche un vistazo a sys.dm_db_index_usage_stats DMV. Solo tenga en cuenta que estos contadores se restablecen cada vez que se reinicia SQL Server.
7
Sobre la base de la respuesta de Joe me ocurrió esto:
SELECT
row_number() over(order by user_seeks,user_lookups,user_scans),
[Database] = d.name,
[Schema]= s.name,
[Table]= o.name,
[Index]= x.name,
[Scans] = user_scans,
[Seeks] = user_seeks,
[Lookups] = user_lookups,
[Last Scan] = last_user_scan,
[System Scans] = system_scans
FROM sys.dm_db_index_usage_stats u
INNER JOIN sys.sysdatabases d on u.database_id = d.dbid
INNER JOIN sys.sysindexes x on u.object_id = x.id and u.index_id = x.indid
INNER JOIN sys.objects o on u.object_id = o.object_id
INNER JOIN sys.schemas s on s.schema_id = o.schema_id
where x.name is not null
order by 1 desc
0
Salida this section de this article por Ian Stirk en 2007. Muy buen conjunto de herramientas, incluyendo la búsqueda de sus índices no utilizados.
0
Compruebe si el usuario busca del índice está aumentando con cada selección en la tabla que está utilizando a menos que el servidor se reinicie esto le dará una idea clara de qué índice se está utilizando o no.
SELECT DISTINCT OBJECT_NAME(sis.OBJECT_ID) TableName, si.name AS IndexName, sc.Name AS ColumnName,
sic.Index_ID, sis.user_seeks, sis.user_scans, sis.user_lookups, sis.user_updates
FROM sys.dm_db_index_usage_stats sis
INNER JOIN sys.indexes si ON sis.OBJECT_ID = si.OBJECT_ID AND sis.Index_ID = si.Index_ID
INNER JOIN sys.index_columns sic ON sis.OBJECT_ID = sic.OBJECT_ID AND sic.Index_ID = si.Index_ID
INNER JOIN sys.columns sc ON sis.OBJECT_ID = sc.OBJECT_ID AND sic.Column_ID = sc.Column_ID
WHERE sis.Database_ID = DB_ID('database_name') AND sis.OBJECT_ID = OBJECT_ID('table_name');
GO
Cuestiones relacionadas
- 1. Cómo saber si se usa glibc
- 2. ¿Cómo puedo saber si un archivo ha existido alguna vez en un svn-repo?
- 3. ¿Alguna vez alguien usa el Control Ribbon?
- 4. ¿Cómo saber si un dll usa ASLR o no?
- 5. ¿Alguna vez el objeto Date usa un calendario no gregoriano?
- 6. ¿Cómo saber qué recurso drawble se usa?
- 7. ¿Cómo se usa una cadena como índice?
- 8. ¿Cómo puedo saber si una aplicación win32 usa .NET runtime
- 9. ¿Alguna manera fácil de saber si los índices mongodb aún se usan o no?
- 10. ¿Cómo puedo saber si mi aplicación PHP usa demasiada memoria?
- 11. ¿Cómo saber si un programa se bloqueó con un subproceso?
- 12. ¿Se desborda BigInteger alguna vez?
- 13. ¿Cómo puedo saber si Matlab está ocupado cuando usa GUI?
- 14. ¿Cuándo, si alguna vez, debemos usar const?
- 15. ¿Cómo saber si hay alguna petición Ajax y Ajax éxito
- 16. ¿Cómo puedo saber en elisp si Emacs usa X?
- 17. SQL Server 2000: ¿Hay alguna forma de saber cuándo se modificó por última vez un registro?
- 18. ¿Cómo saber si un formulario se muestra como diálogo
- 19. ¿Cómo saber si el archivo .apk se usa en el almacén de claves para firmar?
- 20. ¿Cómo saber si ya se estableció un parámetro de salida?
- 21. ¿Cómo se puede saber si el iPhone se bloquea?
- 22. ¿Cómo saber si dos CGRect se cruzan?
- 23. ¿Cómo se puede saber si dos comodines se superponen?
- 24. ¿Cómo saber qué variable de Union se usa?
- 25. Git - ¿Cómo ver si una rama se ha fusionado ALGUNA VEZ en otra rama?
- 26. Cómo detectar si se presiona alguna tecla
- 27. ¿Cómo se usa el índice en la instrucción select?
- 28. ¿Cómo puedo saber si un TClass se deriva de otro?
- 29. ¿Cómo puedo saber si un proceso se está ejecutando?
- 30. ¿Cómo puedo saber si se ha eliminado un `NSManagedObject`?
También tenga en cuenta que los índices se pueden usar con poca frecuencia, pero es posible que tenga el departamento de contabilidad en la línea cuando ejecutan sus tonterías anuales. – Sam