MSSQL2005-QUERY EXECUTION學習筆記之二
內容來自:
一、scan和seek:讀表或索引資料。
1、Seekable Predicates and Covered Columns:
(1)single-column indexes:一般來說,列上有函式或LIKE謂詞中有先導匹配符,都會組織使用該列上的索引,例如:
ABS([Col1]) = 1
[Col1] + 1 = 9
[Col1] LIKE '%abc'
(2)composite indexes:一般只有在索引第一列上有相等謂詞,才能是第二列上的謂詞使用索引,例如:
[Col1] = 3.14 AND [Col2] = 'pi'
[Col1] = 'xyzzy' AND [Col2] <= 0
而有些情況,我們只能使用第一列上的謂詞走索引,而第二列不走索引,這時我們稱第二列上上的謂詞為“剩餘謂詞”,例如:
[Col1] > 100 AND [Col2] > 100 --第一列的謂詞不是相等謂詞
[Col1] LIKE 'abc%' AND [Col2] = 2
最後,我們可能連第一列上的謂詞都不能使用索引,這種情況下,就是直接不能使用索引,而應該更換其他索引,例如:
[Col2] = 0 --跳過了第一列
[Col1] + 1 = 9 AND [Col2] BETWEEN 1 AND 9 --第一列用在了計算表示式中
[Col1] LIKE '%abc' AND [Col2] IN (1, 3, 5) --第一列謂詞LIKE中用到了先導萬用字元
(3)Identifying an Index's Keys:在一個已經有簇索引的表上建立一個非唯一非簇索引時,該索引會隱含簇索引的鍵值。
(4)Covered Columns:堆和簇索引包含表的所有列,而非簇索引僅僅覆蓋基表的一部分列,當然,如果基表上有簇索引,非簇索引還包括簇索引的鍵值,無論給非簇索引是否包含簇關鍵字,在mssql2005中,我們能用create index的include子句為索引新增非鍵列,索引的排序和這些新增的非鍵列無關,例如:
CREATE TABLE T_heap (a int, b int, c int, d int, e int, f int)CREATE INDEX T_heap_a ON T_heap (a)CREATE INDEX T_heap_bc ON T_heap (b, c)CREATE INDEX T_heap_d ON T_heap (d) INCLUDE (e)CREATE UNIQUE INDEX T_heap_f ON T_heap (f)CREATE TABLE T_clu (a int, b int, c int, d int, e int, f int)CREATE UNIQUE CLUSTERED INDEX T_clu_a ON T_clu (a)CREATE INDEX T_clu_b ON T_clu (b)CREATE INDEX T_clu_ac ON T_clu (a, c)CREATE INDEX T_clu_d ON T_clu (d) INCLUDE (e)CREATE UNIQUE INDEX T_clu_f ON T_clu (f)
Table 3-3. Key Columns and Covered Columns in a Set of Nonclustered IndexesIndexKey ColumnsCovered ColumnsT_heap_aaaT_heap_bcb, cb, cT_heap_ddd, eT_heap_fffT_clu_aaa, b, c, d, e, fT_clu_bb, aa, bT_clu_aca, ca, cT_clu_dd, aa, d, eT_clu_ffa, f
這裡注意,唯一性索引T_chu_f的鍵值列中,並不包含簇索引的鍵值列,但它覆蓋了簇索引鍵值列,這是唯一性索引的與其他非簇索引的特別之處。
(5)Bookmark Lookup:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-605579/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MSSQL2005-QUERY EXECUTION學習筆記一SQL筆記
- Oracle學習筆記之二Oracle筆記
- MSSQL配置學習筆記之二SQL筆記
- 《深入淺出MFC》學習筆記之二 (轉)筆記
- 《Mastering Delphi 6學習筆記》之二 (轉)AST筆記
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- Object C學習筆記8-字串NSString之二Object筆記字串
- 黑客學習筆記教程之二:黑客常用攻擊手段黑客筆記
- 【Java學習筆記之二】java識別符號命名規範Java筆記符號
- numpy的學習筆記\pandas學習筆記筆記
- IT學習筆記筆記
- 學習筆記筆記
- tensorflow學習之 Eager execution
- 【學習筆記】數學筆記
- 《JAVA學習指南》學習筆記Java筆記
- Elasticsearch學習筆記Elasticsearch筆記
- Scala學習筆記筆記
- MySql學習筆記MySql筆記
- jQuery 學習筆記jQuery筆記
- react學習筆記React筆記
- 學習筆記(4.3)筆記
- 學習筆記(4.4)筆記
- 學習筆記(3.29)筆記
- 學習筆記(4.1)筆記
- AOP學習筆記筆記
- AspectJ學習筆記筆記
- 學習筆記(3.27)筆記
- 學習筆記(4.2)筆記
- golang 學習筆記Golang筆記
- Zookeeper學習筆記筆記
- 學習筆記(3.24)筆記
- 學習筆記(3.25)筆記
- 學習筆記(3.21)筆記
- GitHub學習筆記Github筆記
- jest 學習筆記筆記
- typescript 學習筆記TypeScript筆記
- Echarts學習筆記Echarts筆記
- js學習筆記JS筆記