欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql普通索引存放數據結構

林雅南2年前11瀏覽0評論

MySQL普通索引存放數據結構

MySQL使用B樹存儲索引。B樹是一種平衡樹,它保證所有葉子節點到根節點的距離相等。這意味著所有的查詢都可以在相同的時間內完成,無論查詢的是某個特定值,還是范圍查詢。

常見的B樹有B-樹和B+樹。在MySQL中,主要使用的是B+樹。B+樹和B-樹的差異在于非葉子節點存儲的指針數,以及葉子節點是否包含指向下一個葉子節點的指針。

對于每個MySQL索引,都有一個B+樹。B+樹的每個節點包含多個索引項。對于普通索引來說,每個索引項存儲索引列的值,以及一個指向實際數據行的指針。
下面是一個示例,假設有一個普通索引(index1)包含列(id, name)。
id  |  name  | other_columns |
| --- | ------| -------------|
|  1  | John  | ...          |
|  2  | Mary  | ...          |
|  3  | Sam   | ...          |
|  4  | Tim   | ...          |
| ... | ...   | ...
在B+樹中,每個節點包含多個索引項。因此,上面的數據可能看起來像這樣:
| id |name |row_pointer |
| -- |----|------------|
| 1  |John|0x1234567   |
| 2  |Mary|0x123456A   |
| 3  |Sam |0x123456B   |
| 4  |Tim |0x123456D   |
在這個示例中,每個索引項都包含id和name的值,以及一個指針,指向實際的數據行。當執行一個查詢時,MySQL會先從根節點開始搜索B+樹,根據查詢條件逐級向下走,直到葉子節點;然后,MySQL通過指針找到實際的數據行并返回結果。

總結

MySQL普通索引使用B+樹作為存儲結構。樹的每個節點包含多個索引項,在普通索引中,每個索引項包含索引列的值和指向實際數據行的指針。所有的查詢都可以在相同的時間內完成,無論查詢的是某個特定值,還是范圍查詢。