前面只是實現了乙個簡單的索引方案,因為我們假設的是所有的目錄項都是連續儲存的。而且乙個頁的大小是有限的,當資料量比較大的時候顯然是不行的,而且如果要將乙個目錄頁中的記錄刪除,則需要進行大量的資料移動。顯然這樣是不太好的。
所以想乙個解決的方案。我們發現其實這個目錄項和我們的使用者記錄的資訊差不多,只不過目錄項中存的是主鍵號和頁號。所以我們可以復用這一結構,但是得區分一下目錄項和普通的使用者記錄,我們之前講過頭資訊1表示的是目錄項記錄,所以用1來表示這是一條目錄項記錄。現在的樣子就是這樣:
顯然我們會想如果資料量大了超過了16kb呢,答案是再來乙個頁來儲存上目錄項的記錄。也就是這樣的:
但是還是有問題,想想 ,我們現在這個結構想要根據主鍵去查一條記錄先要去查詢目錄項的頁號,再去目錄項。最後找到存放真是資料的地方。當資料量很大的時候,這些目錄項頁號可能是不連續的。那我們怎麼辦呢? 當然是再建立乙個目錄頁來管理這些目錄項的頁,結構就變成了這樣了:
等等,這東西為什麼這麼眼熟啊,對了 ,這不是一顆樹的結構嗎,沒錯這就是傳說中的b+樹 。
參考文獻:《mysql是怎樣執行的:從跟上理解mysql》
建立二級索引 索引 一 Mysql建立索引
假如,乙個 薄裡面包含了乙個城市的所有人的姓名和 號碼。那麼,想找到bob cat的 號碼,另外我們知道 簿中名字是按照字母順序排列的,所以首先要查詢姓氏為cat的頁面,然後在這個頁面下查詢名字為bob的 號碼。那如果在 薄中的名字沒有按照字母排列,就需要去瀏覽所有的頁,然後在裡面查詢每個姓名直到找...
mysql 索引的建立
建立索引語法 create unique fulltext spatial index index name using index type on table name index col nam,index col name col name length asc desc mysql的索引型別...
MySQL索引的建立
索引是建立在表上的,是對資料庫表中一列或者多列的值進行排序的一種結構。索引可以提高查詢速度 索引有兩種儲存型別 b型樹 btree 索引 和 雜湊 hsah 索引 1 普通索引 2 唯一性索引 設定唯一索引時,限制該索引的值必須是唯一的 3 全文索引 全文索引只能在 char varchar或者te...