查看当前数据库中没用的索引(sys.dm_db_index_usage_stats)


数据库经过一段时间的使用后,可能会沉积着一些建立后从没使用过的索引,继续维护这些索引就是浪费资源了,很有必要定期找出来分析处理。
SQL2005 有一个非常有用的管理视图:sys.dm_db_index_usage_stats,可以用它找出数据库中不被使用的索引。


---------------------------------------------------------------------------------------
为方便工作,写了一个通用存储过程:

create proc pChkidx
as

select tb_name=object_name(a.object_id)
      ,idx_name=b.name
      ,last_user_update
      ,c.colid,c.keyno
      ,col_name=d.name
into #tmp
from sys.dm_db_index_usage_stats a left join sys.indexes b on a.object_id=b.object_id and a.index_id=b.index_id
                                   left join sys.sysindexkeys c on c.id=a.object_id and c.indid=a.index_id
                                   left join syscolumns d on d.id=c.id and d.colid=c.colid
where database_id=db_id()
     and last_user_seek is null
     and last_user_scan is null
     and last_user_lookup is null
     and last_user_update is not null

order by tb_name,idx_name,keyno


select tb_name,idx_name,last_user_update
       ,keywords= stuff(
                                       (select '+'+ col_name
                                        FROM #tmp 
                                        where tb_name=a.tb_name and idx_name=a.idx_name
                                        order by tb_name,idx_name,keyno
                                        for xml path('') )                              
                                        ,1,1,'')
from #tmp a
group by tb_name,idx_name,last_user_update

drop table #tmp




---------------------------------------------------------------------------------------

执行: exec pChkidx

---------------------------------------------------------------------------------------

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值