Как узнать, какие хранимые процедуры используют какие индексы?
Я пытаюсь определить, какие индексы больше не используются в моей базе данных. Мне очень повезло, используя следующий запрос:
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 раза?