[英]how B-tree indexing works in mysql
當我在mysql中為表創建索引時,我看到index_type是類型BTREE
。 現在,盡管我了解btree,但是我並沒有默默地了解btree如何存儲索引以及數據庫如何基於此來搜索記錄。
我的意思是,btree非常適合數據庫執行讀寫大塊數據,當我們為主Primary key
列類型創建索引時,據我所知,它會創建一棵樹並根據該值拆分根的值根的類型。
現在,它是否僅在樹下存儲主鍵ID
或與該主鍵關聯的整個數據?
找到所需的主要ID后,數據庫如何提取記錄?
數據庫將索引的值存儲為B-Tree
鍵,並將記錄指針存儲為B-Tree
值。
每當您搜索包含某個索引列的特定值的記錄時,引擎就會在B-Tree
中找到保存該值的鍵,並檢索指向該記錄的指針並獲取該記錄。
什么是“記錄指針”,取決於存儲引擎。
在MyISAM
,記錄指針是MYI
文件中記錄的偏移量。
在InnoDB
,記錄指針是PRIMARY KEY
的值。
在InnoDB
,表本身是B-Tree
與PRIMARY KEY
作為B-Tree
鍵。 這就是所謂的“聚集索引”或“索引組織表”。 在這種情況下,所有其他字段都存儲為B-Tree
值。
在MyISAM
,記錄存儲時沒有任何特殊順序。 這稱為“堆存儲”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.