国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

統計--過濾(篩選)索引的統計信息過期問題測試2

2024-07-21 02:48:39
字體:
來源:轉載
供稿:網友
統計--過濾(篩選)索引的統計信息過期問題測試2

在上次的文章統計--過濾(篩選)索引的統計信息過期問題測試中,遺留一個問題,當更新行數滿足統計自動更新條件是,什么樣的查詢會觸發自動更新呢?

受林勇樺的指點,找到以下2個跟蹤標志:

9204 – 打印出被加載的統計信息(With this enabled, we get a report of statistics objects which are considered ‘interesting’ by the query optimizer when compiling, or recompiling the query in question. For potentially useful statistics, just the header is loaded.)

9292 – 打印出從元數據中得到的統計信息的頭信息(With this enabled, we see the ‘interesting’ statistics which end up being fully loaded and used to PRoduce cardinality and distribution estimates for some plan alternative or other. Again, this only happens when a plan is compiled or recompiled – not when a plan is retrieved from cache.)

使用這兩個標志,我們可以執行時知道使用了那些統計信息

準備測試數據

--創建表,并插入5000行數據SELECT TOP(5000) IDENTITY(INT,1,1) AS ID,* INTO TB001FROM SYS.all_columnsGO--創建聚簇索引CREATE CLUSTERED INDEX IDX_IDON TB001(ID)GO--創建過濾索引CREATE INDEX IDX_COLUMNIDON TB001(object_id)WHERE Column_id<3GO--再導入25000行數據INSERT INTO TB001SELECT TOP(5000) * FROM SYS.all_columnsGO 5--更新統計信息UPDATE STATISTICS TB001GOINSERT INTO TB001SELECT TOP(5000) * FROM SYS.all_columnsGO 4

開啟跟蹤標志并執行查詢

DBCC FREEPROCCACHE()GODBCC TRACEON(3604, 9292, 9204)GO--執行使用過濾索引但不能觸發自動更新的查詢SELECT COUNT(1) FROM TB001WHERE Column_id<3
Stats header loaded: DbName: TestDB01, ObjName: TB001, IndexId: 3, ColumnName: column_id, EmptyTable: FALSEStats loaded: DbName: TestDB01, ObjName: TB001, IndexId: 3, ColumnName: column_id, EmptyTable: FALSE

我們發現以上查詢加載了IndexID:3的統計信息(并不存在IndexId=3的索引),該統計信息在查詢時被自動生成

開始第二輪測試:

DBCC FREEPROCCACHE()GODBCC TRACEON(3604, 9292, 9204)GO--執行使用過濾索引且能觸發自動更新的查詢SELECT TOP(1) object_id,COUNT(1)FROM TB001WHERE Column_id<3GROUP BY object_id ORDER BY COUNT(1) DESC
Stats header loaded: DbName: TestDB01, ObjName: TB001, IndexId: 3, ColumnName: column_id, EmptyTable: FALSEStats loaded: DbName: TestDB01, ObjName: TB001, IndexId: 3, ColumnName: column_id, EmptyTable: FALSEStats header loaded: DbName: TestDB01, ObjName: TB001, IndexId: 4, ColumnName: object_id, EmptyTable: FALSEStats loaded: DbName: TestDB01, ObjName: TB001, IndexId: 4, ColumnName: object_id, EmptyTable: FALSEFiltered stats header loaded: DbName: TestDB01, ObjName: TB001, IndexId: 2, ColumnName: object_id, Expr: ([Column_id]<(3)),  EmptyTable: FALSEFiltered stats loaded: DbName: TestDB01, ObjName: TB001, IndexId: 2, ColumnName: object_id, Expr: ([Column_id]<(3)),  EmptyTable: FALSE

查詢同樣自動生成了一個IndexID=4的統計信息,由于查詢中使用到column_id字段,因此IndexID=4的統計信息也被訪問到,同時被訪問加載到的信息還有過濾索引,由于該統計已過期,因此觸發了統計信息自動更新。

--===================================================

結論:

1. 在第一次執行的情況下,查詢使用到索引不一定代表查詢需要使用到統計信息。

2. 在默認自動更新條件下,查詢不會觸發其不訪問到統計信息的自動更新。

--=================================================

慣例有妹子

科普下:此女叫鈴木愛理(すずき あいり),無種,勿求!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台东县| 许昌市| 伊金霍洛旗| 六盘水市| 准格尔旗| 隆尧县| 临潭县| 龙川县| 清徐县| 罗平县| 万山特区| 特克斯县| 雷山县| 渭源县| 兰坪| 孟村| 济源市| 东乌珠穆沁旗| 龙门县| 东宁县| 江津市| 灵宝市| 永仁县| 乐亭县| 漳州市| 海原县| 磐安县| 清丰县| 桃源县| 无为县| 西城区| 乾安县| 政和县| 贵南县| 沽源县| 叙永县| 曲松县| 通化市| 达日县| 宜川县| 长兴县|