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