我有带有 sp_Blitz 5/17/18 8:44AM 版本的 SQL Server 2014 CU11。sp_Blitz 报告说我的一些数据库有用户创建的统计信息。我执行了一个删除所有用户创建的统计信息的脚本。但是,当我重新运行 sp_Blitz 时,它仍然会报告它们。如果我在 Brent 的页面上使用 T-SQL:SELECT * FROM sys.stats WHERE user_created = 1那么我会看到所有用户创建的索引。但是,如果我使用替代代码,例如:
SELECT st.name AS TableName, ss.name AS StatisticName
FROM sys.stats ss
JOIN sys.tables st ON ss.object_id=st.object_id
WHERE ss.user_created = 1
ORDER BY st.name, ss.name;
我没有看到用户创建的索引。我已经尝试了“查找用户统计”脚本的几种变体,唯一报告任何的是布伦特的。为什么会这样?我已经删除了几乎所有用户创建的统计信息,如果可能的话,我想处理这些剩余的东西。
您可以在 sys.stats 中有行,而在 sys.tables 中没有相应的行。
经典示例:索引视图。看这个:
我们的查询正确显示一行:
而您的查询没有,因为没有涉及表:
这个故事的寓意:永远不要怀疑你在 BrentOzar.com 上看到的任何东西。只是在开玩笑。但请相信您在这里看到的,并开始深入研究这些统计数据。