MySQL使用的索引原理是B樹,其實它的全稱是 B-Tree,又稱為多路平衡查找樹,是一種平衡的樹結構,能保證查找數據的效率,尤其是大量數據的查找。在MySQL數據庫中,B樹索引是非常普遍的一種索引類型。
B樹最大的特點是每個節點下面可以擁有多個子樹,這樣就大大減少了樹的深度,減少查詢數據的時間。
B樹的規則: (1)根節點至少有兩個子節點 (2)每個節點有m個子節點,其中m>=2 (3)除了根節點和葉子節點外,每個節點至少有ceil(m/2)個子節點 (4)根節點和葉子節點的子節點數可以不足上述標準 (5)所有葉子節點都在同一層,且不包含任何信息,只用來存儲索引列的信息
在MySQL中,每個表只能有一個聚簇索引(Clustered Index),即InnoDB表的主鍵,聚簇索引的排序方式即是數據的存儲方式,不需要另外存儲索引,相對于非聚簇索引,聚簇索引能夠提高查詢效率。
對于非聚簇索引,MySQL會自動創建相關的B樹索引,每個非聚簇索引B樹存儲著鍵值和對應的行位置,當需要查詢的時候,系統會首先遍歷B樹,根據鍵值快速定位到需要查詢的行,再去訪問表中的數據。但必須注意的是,非聚簇索引在查詢的時候,如果需要訪問的數據過多,會產生大量的IO操作,這會影響查詢的效率。
B樹索引的設計可以很好地解決數據量大的情況,它的每個節點可以存儲多個鍵值,每個節點都能對應多個數據指向磁盤上的數據文件,通過B樹的平衡性質,索引即能快速定位數據位置,減少查詢數據的時間。然而,數據庫中的索引設計并不是越多越好,在某些情況下,過多的索引反而會降低查詢效率,因此,在設計索引時還需要考慮到具體情況,進行合理的優化。
上一篇mysql3表聯查語句1
下一篇mysql3張表怎么連接