Statistics
使用者創建的索引問題 - sp_Blitz 5/17/18 - 輸出不正確?
我有帶有 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 上看到的任何東西。只是在開玩笑。但是請相信您在這裡看到的內容,並開始深入研究這些統計數據。