本文主要介紹sql數(shù)據(jù)庫(kù)中聚集索引和非聚集索引有什么區(qū)別?(sql非聚集索引),下面一起看看sql數(shù)據(jù)庫(kù)中聚集索引和非聚集索引有什么區(qū)別?(sql非聚集索引)相關(guān)資訊。
前言在sql 2012基礎(chǔ)課學(xué)習(xí)過(guò)程中,偶爾穿插其他內(nèi)容進(jìn)行講解,相信看過(guò)sql s測(cè)試表并用sqlstudy創(chuàng)建表{} {} (測(cè)試dbo. {}不為空,{1} {nchar }(10)為空,{2} {nchar }(10)為空)然后讓 讓我們?cè)俅蝿?chuàng)建測(cè)試數(shù)據(jù)。插入{sqlstudy}。{ } { } dbo .測(cè)試({id},{1},{2})選項(xiàng)1,所有選項(xiàng)的 第一個(gè) , second1 alliance 2,所有 第一個(gè) , 第二聯(lián)盟3。;第一個(gè) , second 3 alliance 4 ;第一次 , 第二聯(lián)盟5。;第一個(gè)5。然后,我們?cè)诒淼牡谝涣泻偷诙猩蟿?chuàng)建一個(gè)聚集索引,并創(chuàng)建一個(gè)非聚集索引{} {}對(duì)ix_mytable_nonclustered(dbo ),如下所示。{ 測(cè)試 } {第一個(gè)asc,{第二個(gè)asc)這個(gè)時(shí)候我們同時(shí)運(yùn)行兩個(gè)查詢來(lái)查看它的執(zhí)行計(jì)劃:最后一個(gè)已經(jīng)說(shuō)了,請(qǐng)啟用實(shí)際執(zhí)行的計(jì)劃。從{dbo}中選擇id。{test}其中{ first } = 第一個(gè) 和{秒} = 第二個(gè) 。從測(cè)試dbo的{} {}中選擇兩個(gè)。;第一個(gè) 和{秒} = 第二個(gè)我。此時(shí)我們看到的實(shí)現(xiàn)方案如下:毫無(wú)疑問(wèn),我們可以斷定查詢1是全表掃描,查詢2使用非聚集索引搜索。我們應(yīng)該對(duì)這個(gè)結(jié)論沒(méi)有任何疑問(wèn),因?yàn)樵诘诙€(gè)查詢的第二列創(chuàng)建非聚集索引和id查詢1之前,會(huì)導(dǎo)致全掃描查詢1和非聚集索引查詢2。讓 為表中的列id創(chuàng)建一個(gè)聚集索引。創(chuàng)建一個(gè)聚集索引{} {}對(duì)ix_mytable_clust測(cè)試} {asc)此時(shí),我們?cè)俅芜\(yùn)行以下查詢:select id from { } { } in 測(cè)試 dbo . { first } = ;第一個(gè) 和{秒} = second1從測(cè)試dbo的{}中選擇兩個(gè)。;第一個(gè) 和{秒} = 第二,現(xiàn)在看看查詢執(zhí)行計(jì)劃。通過(guò)為上面的列id創(chuàng)建聚集索引,我們可以立即知道它們都是通過(guò)索引進(jìn)行搜索的,的確如此,但是您已經(jīng)注意到,當(dāng)我們?cè)诹衖d中創(chuàng)建聚集索引理論時(shí),我們應(yīng)該只查找聚集索引。啊,這就是我們要討論的問(wèn)題。我們會(huì)在對(duì)列創(chuàng)建聚集索引時(shí)注意這個(gè)問(wèn)題的概述,查詢條件是創(chuàng)建非聚集索引。此時(shí),創(chuàng)建查詢執(zhí)行計(jì)劃的聚集索引列是非聚集索引搜索。實(shí)際發(fā)生的是一個(gè)內(nèi)部引用非聚集索引的聚集索引。創(chuàng)建聚集索引后,將根據(jù)物理邏輯順序創(chuàng)建表中的數(shù)據(jù)。如果未創(chuàng)建聚集索引,非聚集索引將指向表中的數(shù)據(jù),并返回最終數(shù)據(jù),但一旦創(chuàng)建了非聚集索引,聚集索引將指向聚集索引的重建。這里對(duì)careyson park聚集索引的描述是一個(gè)b樹(shù)結(jié)構(gòu)。與聚集索引不同,樹(shù)的葉節(jié)點(diǎn)存儲(chǔ)指針堆或聚集索引的提升非常準(zhǔn)確。如果創(chuàng)建聚集索引,指向非聚集索引的指針將指向聚集索引,否則將指向堆,即表中的數(shù)據(jù)。此時(shí),我們可以得出這樣的結(jié)論:當(dāng)對(duì)檢索到的列創(chuàng)建聚集索引時(shí)(只返回創(chuàng)建聚集索引的列),查詢不使用聚集索引查找來(lái)檢索結(jié)果,而是使用非聚集索引查找來(lái)檢索結(jié)果。在總結(jié)之前,首先要對(duì)這個(gè)問(wèn)題做一個(gè)定義好的個(gè)人感受,比如非聚集索引的定義:非聚集索引b樹(shù)結(jié)構(gòu),聚集索引b樹(shù)的葉節(jié)點(diǎn),存儲(chǔ)一個(gè)指向堆或者聚集索引。第一次看到這句話的時(shí)候,我沒(méi)有 我沒(méi)有任何感覺(jué)??偟膩?lái)說(shuō),感覺(jué)似乎是清晰的。遇到這樣的問(wèn)題,其實(shí)就是對(duì)虧損的認(rèn)識(shí)不夠深入或者不確定的時(shí)候。當(dāng)您可以將這個(gè)定義或場(chǎng)景作為一個(gè)例子時(shí),兒子,它可能真的懂。這是本文的結(jié)尾。對(duì)于sql,本系列將簡(jiǎn)要講解內(nèi)容和深刻理解。同時(shí)還會(huì)一步步講查詢性能,從拋出問(wèn)題到最終解決問(wèn)題都是一大堆貨。以上是本文的全部?jī)?nèi)容。希望這篇文章的內(nèi)容能給你的學(xué)習(xí)或者工作帶來(lái)一些幫助。有問(wèn)題可以留言交流。希望你能得到更多的支持。
了解更多sql數(shù)據(jù)庫(kù)中聚集索引和非聚集索引有什么區(qū)別?(sql非聚集索引)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。