sql - 在所有存储过程中搜索索引
问题描述
我必须从表中获取使用索引的所有存储过程的列表。我的任务是删除数据库中未使用或未超载索引的索引。
首先我从一个表中获取所有索引:
DECLARE @tableName AS VARCHAR(50) = 'tbl_INVOICES';
SELECT
IND.name as IndexName
FROM sys.indexes IND
INNER JOIN sys.index_columns IND_COL on IND.index_id = IND_COL.index_id and IND.object_id = IND_COL.object_id
WHERE IND.object_id = OBJECT_ID(@tableName)
AND is_included_column = 0
ORDER BY
IndexName
对于我获得的每一个索引,我都必须进行另一次搜索,预期的结果是存储的过程列表,其中包含它们正在使用的索引的名称
SELECT
OBJ.name AS [object_name],
IND.name AS index_name,
IND.type_desc,
IND_USA_STATS.user_seeks,
IND_USA_STATS.user_scans,
IND_USA_STATS.user_lookups,
IND_USA_STATS.user_updates,
OBJ.type,
IND.type,
IND_USA_STATS.index_id
FROM
sys.indexes IND
INNER JOIN
sys.objects OBJ ON IND.[object_id] = OBJ.[object_id]
LEFT JOIN
sys.dm_db_index_usage_stats IND_USA_STATS ON IND.[object_id] = IND_USA_STATS.[object_id] AND
IND.index_id = IND_USA_STATS.index_id AND
IND_USA_STATS.database_id = DB_ID(@tableName)
WHERE
OBJ.type IN ('P')
ORDER BY
index_name
好吧,花了很长时间,我无法获得列表,这是我所做的最后一次尝试,它没有给我结果,这里的问题是如何获得使用确定索引的存储过程列表?
解决方案
推荐阅读
- android - 将数据导入 AlertDialog,同时避免“尝试在空对象引用上调用虚拟方法”
- git - 为什么 `git rev-parse HEAD^2` 不起作用?
- java - 运行 Spring 应用程序问题
- protractor - 即使测试失败,Browserstack 也会将测试标记为通过
- eclipse - 如何在eclipse中正确格式化布尔表达式
- python - 按 matplotlib 中的列表值对条形图进行排序
- bash - SLURM下的循环中缺少迭代
- javascript - 为部署在 tomcat 上的 react\spring 应用配置 url
- javascript - 传单,地图非地理分辨率
- windows - 如何验证 CNTLM 是否正常工作?