zoukankan      html  css  js  c++  java
  • 查找未使用的非聚集索引和表 for sql server 2005/2008


    查找未使用的非聚集索引和未使用的表.
    DMV:sys.dm_db_index_usage_stats
    The counters are initialized to empty whenever the SQL Server (MSSQLSERVER) service is started. In addition, whenever a database is detached or is shut down (for example, because AUTO_CLOSE is set to ON), all rows associated with the database are removed.

    代码参考:
    http://www.cnblogs.com/nzperfect/archive/2010/03/25/1695449.html



    --查找未使用的非聚集索引(排除聚集索引和堆表)
    --
    This returns all the noclustered indexes that have not been used for any requests by users 
    --
    or the system from the time SQL Server is started.
    select tablename,indexname,'drop index '+tablename+'.'+indexname as dropIndexCommand
    from 
        (
            
    select object_name(i.object_idas tablename, i.name as indexname
            
    from sys.indexes i
            
    left outer join sys.dm_db_index_usage_stats s
                
    on s.object_id = i.object_id and s.index_id = i.index_id
                
    and s.database_id = db_id()
            
    where objectproperty(i.object_id'IsUserTable'= 1
                
    and objectproperty(i.object_id,'IsMSShipped')=0
                
    and i.index_id > 1 -- 0 indicates the heap   1 indicates the clustered index  
                and i.is_primary_key = 0   --  1 indicates the primary key
                
    and s.object_id is null
            
    union all
            
    select object_name(i.object_idas tablename, i.name as indexname
            
    from sys.indexes i
            
    inner join sys.dm_db_index_usage_stats s
                
    on s.object_id = i.object_id and s.index_id = i.index_id
                
    and s.database_id = db_id()
            
    where objectproperty(i.object_id'IsUserTable'= 1
                
    and objectproperty(i.object_id,'IsMSShipped')=0
                
    and i.index_id > 1 -- 0 indicates the heap   1 indicates the clustered index 
                and i.is_primary_key = 0 --  1 indicates the primary key
                and (s.user_seeks + s.user_scans + s.user_lookups)=0
        )a



    --查找未使用的表
    --
    This returns all the table that have not been used for any requests by users 
    --
    or the system from the time SQL Server is started.
        select object_name(i.object_idas tablename, i.name as clusteredindexname,
        
    case when i.index_id=0 then 'Heap Table'
            
    when i.index_id=1 then 'Clustered Table' end as TableType
        
    from sys.indexes i
        
    left outer join sys.dm_db_index_usage_stats s
            
    on s.object_id = i.object_id and s.index_id = i.index_id
            
    and s.database_id = db_id()
        
    where objectproperty(i.object_id'IsUserTable'= 1
            
    and objectproperty(i.object_id,'IsMSShipped')=0
            
    and i.index_id in (0,1-- 0 indicates the heap   1 indicates the clustered index     
            and s.object_id is null



    Please tell me if you find bugs.

    Thanks for reading,
    nzperfect


    作者:nzperfect
    出处:http://www.cnblogs.com/nzperfect/
    引用或者转载本BLOG的文章请注明原作者和出处,并保留原文章中的版权信息。

  • 相关阅读:
    js正则表达式基本语法
    类似于QQ的右滑删除效果的实现方法
    JS设置cookie、读取cookie、删除cookie
    JavaScript随机生成颜色的方法
    mysql数据库备份及恢复
    Javascript 实现简单计算器实例代码
    JavaScript 实现的checkbox经典实例分享
    网页瀑布流布局jQuery实现代码
    Django Web在Apache上的部署
    VIM使用系列之一——配置VIM下C/C++编程环境
  • 原文地址:https://www.cnblogs.com/nzperfect/p/1700649.html
Copyright © 2011-2022 走看看