什么是聚集索引
聚集索引是數(shù)據(jù)庫表的主鍵索引,以一種特定的順序存儲數(shù)據(jù)的邏輯視圖。在一個表中,只能有一個聚集索引。聚集索引的特點在于,它將數(shù)據(jù)存儲與索引綁定在一起,即索引的順序就是數(shù)據(jù)的物理存儲順序。例如,在一個按主鍵升序排列的表中,主鍵值是聚集索引。
什么是非聚集索引
非聚集索引與聚集索引的存儲方式完全不同,它與表數(shù)據(jù)分開存儲,非聚集索引本身按照索引值排序,并包含一個指針,指向每個索引值對應的數(shù)據(jù)行。一個表可以有多個非聚集索引,它們通常用于提供除主鍵以外的查詢?nèi)肟凇?/p>
什么是覆蓋索引
覆蓋索引是非聚集索引的一種特例,它包含了查詢中的所有字段。查詢過程中,數(shù)據(jù)庫引擎可以只使用覆蓋索引來完成查詢,無需訪問表數(shù)據(jù),因此能大大提高查詢效率。覆蓋索引通常用于經(jīng)常執(zhí)行的查詢,它覆蓋了查詢中的所有字段,從而避免了磁盤I/O操作。
總結(jié)
聚集索引、非聚集索引和覆蓋索引都有各自的優(yōu)點和用途,理解它們的區(qū)別和適用場景對于優(yōu)化數(shù)據(jù)庫性能非常重要。聚集索引用于定義數(shù)據(jù)的物理存儲順序,優(yōu)化了讀取速度;非聚集索引提供了額外的數(shù)據(jù)查詢?nèi)肟?,可提高多條件查詢的速度;覆蓋索引則是通過包含所有查詢字段來進一步優(yōu)化查詢性能。
延伸閱讀
什么是B樹
B-樹是一種多路搜索樹(并不一定是二叉的)
1970年,R.Bayer和E.mccreight提出了一種適用于外查找的樹,它是一種平衡的多叉樹,稱為B樹(或B-樹、B_樹)。
一棵m階B樹(balanced tree of order m)是一棵平衡的m路搜索樹。它或者是空樹,或者是滿足下列性質(zhì)的樹:
1、根結(jié)點至少有兩個子女;
2、每個非根節(jié)點所包含的關(guān)鍵字個數(shù) j 滿足:┌m/2┐ – 1 <= j <= m – 1;
3、除根結(jié)點以外的所有結(jié)點(不包括葉子結(jié)點)的度數(shù)正好是關(guān)鍵字總數(shù)加1,故內(nèi)部子樹個數(shù) k 滿足:┌m/2┐ <= k <= m ;
4、所有的葉子結(jié)點都位于同一層。
特點:
是一種多路搜索樹(并不是二叉的):
1.定義任意非葉子結(jié)點非常多只有M個兒子;且M>2;
2.根結(jié)點的兒子數(shù)為[2, M];
3.除根結(jié)點以外的非葉子結(jié)點的兒子數(shù)為[M/2, M];
4.每個結(jié)點存放至少M/2-1(取上整)和至多M-1個關(guān)鍵字;(至少2個關(guān)鍵字)
5.非葉子結(jié)點的關(guān)鍵字個數(shù)=指向兒子的指針個數(shù)-1;
6.非葉子結(jié)點的關(guān)鍵字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];
7.非葉子結(jié)點的指針:P[1], P[2], …, P[M];其中P[1]指向關(guān)鍵字小于K[1]的
子樹,P[M]指向關(guān)鍵字大于K[M-1]的子樹,其它P[i]指向關(guān)鍵字屬于(K[i-1], K[i])的子樹;
8.所有葉子結(jié)點位于同一層;