[轉(zhuǎn)]聚集索引和非聚集索引的區(qū)別

聚集索引和非聚集索引的根本區(qū)別是表記錄的排列順序和與索引的排列順序是否一致。

聚集索引表記錄的排列順序與索引的排列順序一致

  • 優(yōu)點(diǎn)是查詢速度快,因?yàn)橐坏┚哂械谝粋€(gè)索引值的紀(jì)錄被找到,具有連續(xù)索引值的記錄也一定物理的緊跟其后。
  • 缺點(diǎn)是對(duì)表進(jìn)行修改速度較慢,這是為了保持表中的記錄的物理順序與索引的順序一致,而把記錄插入到數(shù)據(jù)頁的相應(yīng)位置,必須在數(shù)據(jù)頁中進(jìn)行數(shù)據(jù)重排, 降低了執(zhí)行速度。建議使用聚集索引的場(chǎng)合為:
    a. 此列包含有限數(shù)目的不同值;
    b. 查詢的結(jié)果返回一個(gè)區(qū)間的值;
    c. 查詢的結(jié)果返回某值相同的大量結(jié)果集。

非聚集索引指定了表中記錄的邏輯順序,但記錄的物理順序和索引的順序不一致,聚集索引和非聚集索引都采用了B+樹的結(jié)構(gòu),但非聚集索引的葉子層并不與實(shí)際的數(shù)據(jù)頁相重疊,而采用葉子層包含一個(gè)指向表中的記錄在數(shù)據(jù)頁中的指針的方式。
非聚集索引比聚集索引層次多,添加記錄不會(huì)引起數(shù)據(jù)順序的重組。
建議使用非聚集索引的場(chǎng)合為:
a. 此列包含了大量數(shù)目不同的值;
b. 查詢的結(jié)束返回的是少量的結(jié)果集;
c. order by 子句中使用了該列。

--不用索引查詢
     Select * FROM IndexTestTable WHIT(INDEX(0))
     Where Status='B'
--創(chuàng)建聚集索引
     Create CLUSTERED INDEX icIndexTestTable
     ON IndexTestTable(Status)
     GO
--使用索引查詢
     Select * FROM IndexTestTable WITH(INDEX(icIndexTestTable))
     Where Status='B'

表中經(jīng)常有一個(gè)列或列的組合,其值能唯一地標(biāo)識(shí)表中的每一行。這樣的一列或多列稱為表的主鍵.(默認(rèn)為聚集索引)

聚集索引確定表中數(shù)據(jù)的物理順序。聚集索引類似于電話簿,后者按姓氏排列數(shù)據(jù)。由于聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲(chǔ)順序,因此一個(gè)表只能包含一個(gè)聚集索引。但該索引可以包含多個(gè)列(組合索引),就像電話簿按姓氏和名字進(jìn)行組織一樣。

非聚集索引與課本中的索引類似。數(shù)據(jù)存儲(chǔ)在一個(gè)地方,索引存儲(chǔ)在另一個(gè)地方,索引帶有指針指向數(shù)據(jù)的存儲(chǔ)位置。索引中的項(xiàng)目按索引鍵值的順序存儲(chǔ),而表中的信息按另一種順序存儲(chǔ)(這可以由聚集索引規(guī)定)。

如果在表中未創(chuàng)建聚集索引,則無法保證這些行具有任何特定的順序。

聚集索引..就像我們新華字典中的按拼音排序..即你查.."愛"字..可以在前面看到"癌"字...但不你不在前后頁中看到"受"字..

而非聚集索引..就是新華字典中的按部首..筆劃排序...

聚集索引相當(dāng)于我們書本上前面的目錄的一樣,它可以方便快速的找到你想找的內(nèi)容,而非聚集索引就相當(dāng)于書最后幾頁的解釋,它是對(duì)書中某個(gè)語句或者是生詞的解釋,就像我們上學(xué)時(shí)候的地理說一樣,書后面都有各種地理名稱的英文解釋;

《數(shù)據(jù)庫原理》里面的解釋:聚集索引的順序就是數(shù)據(jù)的物理存儲(chǔ)順序,而非聚集索引的順序和數(shù)據(jù)物理排列無關(guān)。因?yàn)閿?shù)據(jù)在物理存放時(shí)只能有一種排列方式,所以一個(gè)表只能有一個(gè)聚集索引。在SQL SERVER中,索引是通過二叉樹的數(shù)據(jù)結(jié)構(gòu)來描述的;我們可以如此理解這個(gè)兩種索引:聚集索引的葉節(jié)點(diǎn)就是數(shù)據(jù)節(jié)點(diǎn),而非聚集索引的葉節(jié)點(diǎn)仍然是索引節(jié)點(diǎn),只不過其包含一個(gè)指向?qū)?yīng)數(shù)據(jù)塊的指針。

聚集索引會(huì)降低 insert,和update操作的性能,所以,是否使用聚集索引要全面衡量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容