Я пытаюсь определить, какие индексы больше не используются в моей базе данных. Мне очень повезло, используя следующий запрос:
SELECT OBJECT_NAME(S.[OBJECT_ID]) AS [OBJECT NAME],
I.[NAME] AS [INDEX NAME],
i.Type_Desc as [Index Type],
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 i.name is not null
AND
( OBJECT_NAME(S.[OBJECT_ID]) = 'Table1'
OR
OBJECT_NAME(S.[OBJECT_ID]) = 'Table2'
OR
OBJECT_NAME(S.[OBJECT_ID]) = 'Table3'
)
ORder by S.[OBJECT_ID], user_Seeks desc , user_scans desc
Что я хотел бы сейчас найти, так это то, что хранимые процедуры вызывают поиск, сканирование и поиск, о которых сообщает вышеуказанный запрос. Хранится ли эта информация в системных представлениях / таблицах?
ПОЯСНЕНИЯ
Как указал gbn, хранимая процедура не использует индекс напрямую, она использует таблицу, в которой используется индекс. Ниже приводится объяснение, которое, я надеюсь, прояснит то, что я пытаюсь спросить здесь.
Можно ли мне определить, какой SQL был запущен, что вызвало использование вышеуказанных индексов? Например, если один из индексов, о которых сообщается, имеет 10 User_Seeks, можно ли определить, что exec sp_1
вызвало это использование 7 раз, а exec sp_2
вызвало это использование 3 раза?