How to find what Stored Procedures are using what indexes?

后端 未结 5 1123
终归单人心
终归单人心 2021-02-15 18:34

I am trying to determine what indexes are no longer used in my Database. I have had great luck using the following query:

SELECT   OBJECT_NAME(S.[OBJECT_ID]) AS         


        
5条回答
  •  终归单人心
    2021-02-15 18:42

    Edit (again, after question update):

    No realistic chance. You could try profiler and capture the textplan. I saw this once and it killed a server though: it's a lot of text to record. YMMV :-)

    Stored procedures do not use indexes.

    Stored procs use tables (and indexed views) that then use indexes (or don't use as you've worked out above)

    Doing SELECT col1, col2 FROM myTable WHERE col2 = 'foo' ORDER BY col1 is the same whether it's in a stored procedure, view, user defined function or by itself.

    Edit: Our index usage script, downloaded from somewhere...

    SELECT
        o.name AS [object_name], 
        i.name AS index_name, 
        i.type_desc, 
        u.user_seeks, u.user_scans, 
        u.user_lookups, u.user_updates,
        o.type
    FROM
        sys.indexes i
        JOIN
        sys.objects o ON i.[object_id] = o.[object_id]
        LEFT JOIN 
        sys.dm_db_index_usage_stats u ON i.[object_id] = u.[object_id] AND 
                                        i.index_id = u.index_id AND 
                                        u.database_id = DB_ID()
    WHERE
        o.type IN ('U', 'V') AND
        i.name IS NOT NULL
    ORDER BY 
        u.user_seeks + u.user_scans + u.user_lookups, u.user_updates
    

提交回复
热议问题