SNAHi
任何人请建议在 sql 中进行查询以查找未使用的表。
我有一个遗留应用程序从 Coldfusion 迁移到 .net。但是现在有很多表未使用
从数据库中查找所有未使用的对象的最佳方法是什么?(SQL 2005)
谢谢国民账户体系
在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 天左右,那么您就很确定您不再需要该表了。
马克
| 归档时间: |
|
| 查看次数: |
3386 次 |
| 最近记录: |