日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

難檢字筆畫索引是什么意思 索引是什么意思


難檢字筆畫索引是什么意思 索引是什么意思


概述
學(xué)數(shù)據(jù)庫一定要對其中索引是怎么設(shè)計(jì)去做個探討,由一個點(diǎn)逐步深入學(xué)習(xí),下面以索引為入口探討下sqlserver數(shù)據(jù)庫 。
01索引概念
索引是什么:數(shù)據(jù)庫中的索引類似于一本書的目錄,在一本書中使用目錄可以快速找到你想要的信息,而不需要讀完全書 。在數(shù)據(jù)庫中,數(shù)據(jù)庫程序使用索引可以重啊到表中的數(shù)據(jù),而不必掃描整個表 。書中的目錄是一個字詞以及各字詞所在的頁碼列表,數(shù)據(jù)庫中的索引是表中的值以及各值存儲位置的列表 。
索引的利弊:查詢執(zhí)行的大部分開銷是I/O,使用索引提高性能的一個主要目標(biāo)是避免全表掃描,因?yàn)槿頀呙栊枰獜拇疟P上讀取表的每一個數(shù)據(jù)頁,如果有索引指向數(shù)據(jù)值,則查詢只需要讀少數(shù)次的磁盤就行 。所以合理的使用索引能加速數(shù)據(jù)的查詢 。但是索引并不總是提高系統(tǒng)的性能,帶索引的表需要在數(shù)據(jù)庫中占用更多的存儲空間,同樣用來增刪數(shù)據(jù)的命令運(yùn)行時間以及維護(hù)索引所需的處理時間會更長 。
02聚集索引和非聚集索引
sqlserver的索引分為聚集索引和非聚集索引
1、 聚集索引
表的數(shù)據(jù)是存儲在數(shù)據(jù)頁中(數(shù)據(jù)頁的PageType標(biāo)記為1),SqlServer一頁是8k,存滿一頁就開辟下一頁存儲 。如果表有聚集索引,那么一筆一筆物理數(shù)據(jù)就是按聚集索引字段的大小升/降排序存儲在頁中 。當(dāng)對聚集索引字段更新或中間插入/刪除數(shù)據(jù)時,都會導(dǎo)致表數(shù)據(jù)移動(造成性能一定影響),因?yàn)樗3稚?降排序 。
注意,主鍵只是默認(rèn)是聚集索引,它也可以設(shè)置為非聚集索引,也可以在非主鍵字段上設(shè)置為聚集索引,全表只能有一個聚集索引 。
一個優(yōu)秀的聚集索引字段一般包含以下4個特性:
(1)自增長
總是在末尾增加記錄,減少分頁和索引碎片 。
(2)不被更改
減少數(shù)據(jù)移動 。
(3)唯一性
唯一性是任何索引最理想的特性,可以明確索引鍵值在排序中的位置 。
更重要的是,索引鍵指唯一的話,它在每條記錄里才可以正確指向源數(shù)據(jù)行RID 。如果聚集索引鍵值不唯一,SqlServer就需要內(nèi)部生成uniquifier 列組合當(dāng)作聚集鍵保證“鍵值”唯一性;如果非聚集索引鍵值不唯一,就會增加RID列(聚集索引鍵或者堆表中的行指針)保證“鍵值”唯一性 。
為了“鍵值”唯一性,對于聚集索引,uniquifier 列只在索引值重復(fù)時增加 。對于非聚集索引,如果創(chuàng)建索引時沒定義唯一,RID會在所有記錄增加,就算索引值是唯一的;如果創(chuàng)建索引時定義唯一,RID只在葉子層增加,用于查找源數(shù)據(jù)行,即書簽查找操作 。
(4)字段長度小
聚集索引鍵長度越小,一頁索引頁就可以容納更多索引記錄,進(jìn)而減少索引B樹結(jié)構(gòu)的深度 。例如,一個百萬記錄的表有一個int聚集索引,可能只需要3層的B樹結(jié)構(gòu) 。如果把聚集索引定義在更寬的列(比如uniqueidentifier列需要16 字節(jié)),那么索引的深度會增加到4層 。任何聚集索引查找需要4個I/O操作(確切的說是4個邏輯讀),原先只要3個I/O操作 。
同樣,非聚集索引里會包含聚集索引鍵值,聚集索引鍵長度越小非聚集索引記錄也就越小,一頁索引頁就可以容納更多索引記錄 。
2、 非聚集索引
也是存儲在頁中(PageType標(biāo)記為2的頁,叫索引頁) 。比如表T建立了一個非聚集索引Index_A,那么表T有100條數(shù)據(jù)的話,那么索引Index_A也就有100條數(shù)據(jù)(準(zhǔn)確的說是100條葉子節(jié)點(diǎn)數(shù)據(jù),索引是B樹結(jié)構(gòu),如果樹的高度大于0,那么就有根節(jié)點(diǎn)頁或中間節(jié)點(diǎn)頁數(shù)據(jù),這時索引數(shù)據(jù)就超過100條),如果表T還有非聚集索引Index_B,那么Index_B也是至少100條數(shù)據(jù),所以索引建越多開銷越大 。

推薦閱讀