建议在 sql 中查询以查找未使用的表

SNA*_*SNA 0 sql-server

SNAHi

任何人请建议在 sql 中进行查询以查找未使用的表。

我有一个遗留应用程序从 Coldfusion 迁移到 .net。但是现在有很多表未使用

从数据库中查找所有未使用的对象的最佳方法是什么?(SQL 2005)

谢谢国民账户体系

mar*_*c_s 5

在SQL Server中,实际的表数据聚集索引。在 SQL Server 2005 及更高版本中的动态管理视图 (DMV) 上使用此查询,您可以找到未使用的索引 - 如果您发现任何聚集索引 (index_id=1) 长时间未使用,则表明该表未被使用不再:

DECLARE  @dbid INT
SELECT @dbid = DB_ID(DB_NAME())

SELECT   
    OBJECTNAME = OBJECT_NAME(I.OBJECT_ID),
    INDEXNAME = I.NAME,
    I.INDEX_ID
FROM     
    SYS.INDEXES I
JOIN 
    SYS.OBJECTS O ON I.OBJECT_ID = O.OBJECT_ID
WHERE    
    OBJECTPROPERTY(O.OBJECT_ID, 'IsUserTable') = 1
    AND I.INDEX_ID NOT IN 
        (SELECT S.INDEX_ID
        FROM SYS.DM_DB_INDEX_USAGE_STATS S
        WHERE S.OBJECT_ID = I.OBJECT_ID
              AND I.INDEX_ID = S.INDEX_ID
              AND DATABASE_ID = @dbid)
ORDER BY 
    OBJECTNAME,
    I.INDEX_ID,
    INDEXNAME ASC
Run Code Online (Sandbox Code Playgroud)

另一种选择是,如果您怀疑表未被使用,则暂时重命名该表,然后查看您的应用程序是否仍按预期工作。如果他们这样做了 30 天左右,那么您就很确定您不再需要该表了。

马克