Vyhledání nepoužívaného (a zbytečného) indexu v MS SQL
Indexy zajišťují v SQL databázi rychlý přístup k informacím, ale naopak při zápisech berou nějakou část výkonu. Pokud je indexů na tabulce použito zbytečně mnoho, mohou při zápisech zásadně ovlivnit čas potřebný k provedení operace. V případě ztráty výkonu je dobré čas od času vyjet seznam indexů, které jsou málo používané (nebo se nepoužívají vůbec) a takové indexy je možné bez následků zcela odebrat – při hledání jsou zbytečné a při zápisech zdržují. Informace o využití indexů poskytne např. tento dotaz:
SELECT OBJECT_NAME(S.[OBJECT_ID]) AS [OBJECT NAME],
I.[NAME] AS [INDEX NAME],
'DROP INDEX '+I.[NAME]+' ON '+OBJECT_NAME(S.[OBJECT_ID]) as drop_index_sql,
USER_SEEKS,
USER_SCANS,
USER_LOOKUPS,
USER_UPDATES
FROM SYS.DM_DB_INDEX_USAGE_STATS AS S
INNER JOIN SYS.INDEXES AS I ON I.[OBJECT_ID] = S.[OBJECT_ID] AND I.INDEX_ID = S.INDEX_ID
WHERE OBJECTPROPERTY(S.[OBJECT_ID],'IsUserTable') = 1
AND S.database_id = DB_ID()
and
OBJECT_NAME(S.[OBJECT_ID]) like '%'
order by user_seeks,user_scans,user_lookups,user_updates
Napsat komentář