我有一个大数据库和很多表,我想确定哪些列没有被任何商店程序或任何查询调用,或者没有使用。
答案 0 :(得分:0)
我不确定这是否是您正在寻找的内容,但在您查看的数据库中,系统视图的文件夹有三个,其中三个是以下内容。查看all_objects查找表名,然后使用该表的object_id从其他查询中进行选择。这里可能还有其他元数据适合您的需要。
SELECT *
FROM sys.all_objects
SELECT *
FROM sys.all_columns
WHERE object_id = 981578535
SELECT *
FROM sys.all_views
WHERE object_id = 981578535
答案 1 :(得分:0)
经过调查后,我发现了一个名为Query Store的SQL Server新功能,您可以在磁盘中找到包含其他信息的执行。如果您有SQL Server 2016实例,则可以在数据库的属性中找到它。在那里你可以改变捕获的天数,然后你可以在理论上尝试找到有问题的列。这项技术的想法是为您提供更多的性能调整选项。
您可以使用此查询找到信息:
SELECT TOP 10 qt.query_sql_text, q.query_id,
qt.query_text_id, p.plan_id, rs.last_execution_time
FROM sys.query_store_query_text AS qt
JOIN sys.query_store_query AS q
ON qt.query_text_id = q.query_text_id
JOIN sys.query_store_plan AS p
ON q.query_id = p.query_id
JOIN sys.query_store_runtime_stats AS rs
ON p.plan_id = rs.plan_id
where qt.query_sql_text LIKE '%ColumnToFind%'
ORDER BY rs.last_execution_time;
致谢:Query Store