Statistics

使用者創建的索引問題 - sp_Blitz 5/17/18 - 輸出不正確?

  • May 17, 2018

我有帶有 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 中沒有相應的行。

經典範例:索引視圖。看這個:

CREATE TABLE dbo.T1 (ID INT PRIMARY KEY CLUSTERED);
INSERT INTO dbo.T1 VALUES (1);
GO
CREATE OR ALTER VIEW dbo.vwJetta WITH SCHEMABINDING AS
 SELECT T1.ID
 FROM dbo.T1;
CREATE UNIQUE CLUSTERED INDEX CLIX ON dbo.vwJetta(ID);
GO
CREATE STATISTICS STAT ON dbo.vwJetta(ID);
GO
SELECT * FROM sys.stats WHERE user_created = 1;

我們的查詢正確顯示了一行:

一個狀態

而您的查詢沒有,因為不涉及表:

悲傷的長號

故事的寓意:永遠,永遠不要懷疑你在 BrentOzar.com 上看到的任何東西。只是在開玩笑。但是請相信您在這裡看到的內容,並開始深入研究這些統計數據。

引用自:https://dba.stackexchange.com/questions/207092