您好,登錄后才能下訂單哦!
一、索引結(jié)構(gòu)
在聚集索引上建立非聚集索引,在日常應(yīng)用中經(jīng)常發(fā)生。
?xml:namespace>
二、實(shí)驗(yàn)[三E]
繼續(xù)使用上一篇文章中創(chuàng)建的唯一聚集索引,在此基礎(chǔ)之上新建一個(gè)非聚集索引。
1. 創(chuàng)建非聚集索引
CREATE INDEX IX_person1_UserIDModifyDate ON person1 (UserID,ModifyDate) |
2. 查看索引占用的空間
DBCC SHOWCONTIG ('person1') WITH ALL_INDEXES |
結(jié)果如下:
DBCC SHOWCONTIG 正在掃描 'person1' 表... 表: 'person1' (389576426);索引 ID: 1,數(shù)據(jù)庫 ID: 8 已執(zhí)行 TABLE 級(jí)別的掃描。 - 掃描頁數(shù)................................: 4000 - 掃描區(qū)數(shù)..............................: 500 - 區(qū)切換次數(shù)..............................: 499 - 每個(gè)區(qū)的平均頁數(shù)........................: 8.0 - 掃描密度 [最佳計(jì)數(shù):實(shí)際計(jì)數(shù)].......: 100.00% [500:500] - 邏輯掃描碎片 ..................: 0.03% - 區(qū)掃描碎片 ..................: 2.20% - 每頁的平均可用字節(jié)數(shù).....................: 76.0 - 平均頁密度(滿).....................: 99.06% DBCC SHOWCONTIG 正在掃描 'person1' 表... 已執(zhí)行 LEAF 級(jí)別的掃描。 - 掃描頁數(shù)................................: 179 - 掃描區(qū)數(shù)..............................: 23 - 區(qū)切換次數(shù)..............................: 22 - 每個(gè)區(qū)的平均頁數(shù)........................: 7.8 - 掃描密度 [最佳計(jì)數(shù):實(shí)際計(jì)數(shù)].......: 100.00% [23:23] - 邏輯掃描碎片 ..................: 0.00% - 區(qū)掃描碎片 ..................: 4.35% - 每頁的平均可用字節(jié)數(shù).....................: 51.3 - 平均頁密度(滿).....................: 99.37% DBCC 執(zhí)行完畢。如果 DBCC 輸出了錯(cuò)誤信息,請(qǐng)與系統(tǒng)管理員聯(lián)系。 |
3. 查看索引的層次
對(duì)于建立在聚集索引上的非聚集索引,
SELECT index_depth, index_level, record_count, page_count, min_record_size_in_bytes as 'MinLen', max_record_size_in_bytes as 'MaxLen', avg_record_size_in_bytes as 'AvgLen', convert(decimal(6,2),avg_page_space_used_in_percent) as 'PageDensity' FROM sys.dm_db_index_physical_stats (8, OBJECT_ID('person1'),2,NULL,'DETAILED') |
結(jié)果如下表所示:
index _depth | Index _level | Record _count | Page _count | MinLen | MaxLen | AvgLen | PageDensity |
2 | 0 | 80000 | 179 | 16 | 16 | 16 | 99.36 |
2 | 1 | 179 | 1 | 22 | 22 | 22 | 53.05 |
根據(jù)上表的數(shù)據(jù),可以發(fā)現(xiàn)它與堆上的非聚集索引的數(shù)據(jù)是一樣的。該索引共有2層。level=0 是葉級(jí),它有179個(gè)頁面,指向底層的聚集索引的根頁;level=1 是這個(gè)非聚集索引的根頁,它只有1個(gè)頁面,指向葉級(jí)的179個(gè)索引頁。
三、比較三類索引占用的頁數(shù)
比較前面幾個(gè)實(shí)驗(yàn),各類索引占用的頁數(shù)如下:
1. 堆
在實(shí)驗(yàn)[三A]中,堆是最原始的結(jié)構(gòu),index_id = 0,存儲(chǔ)了 80000 條記錄,占用了4000 頁。
2. 聚集索引
聚集索引的 index_id = 1。
唯一聚集索引在葉級(jí)將數(shù)據(jù)頁重新進(jìn)行物理排序,不會(huì)額外增加數(shù)據(jù)頁。由于索引寬度固定,因此在根級(jí)只占用了1個(gè)頁,中間級(jí)占用了7個(gè)頁。一共占用了1+7+4000=4008 頁。與堆相比,非葉級(jí)的索引頁多了8頁。
非唯一聚集索引需要在后臺(tái)保持?jǐn)?shù)據(jù)的唯一,因此在后臺(tái)增加了一個(gè) 4 字節(jié)的uniqueifier 列,有可能需要增加額外的數(shù)據(jù)頁。在前面的案例中,非唯一聚集索引使用了4009頁,也就是多了9個(gè)頁。同時(shí)由于索引寬度的開銷較大,中間級(jí)占用了10個(gè)頁,加上根級(jí)占用了1個(gè)頁,一共占用了1+10+4009=4020 頁。與堆相比,葉級(jí)索引頁(數(shù)據(jù)頁)多了9頁,非葉級(jí)的索引頁多了11頁。
3. 非聚集索引
堆上的非聚集索引與聚集索引上的非聚集索引,index_id >= 2,占用了相同數(shù)量的索引頁面,頁面數(shù)量為:179+1=180 頁。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。