為什麼 innodb 不在輔助/非聚集索引中儲存行指標?
P粉038161873
P粉038161873 2023-09-11 17:28:42
0
1
598

眾所周知,innodb在輔助索引中只儲存主鍵值,這意味著我們需要再次遍歷聚集索引B 樹來取得行記錄。

為什麼不直接將行指標儲存在二級索引中以減少額外的查找工作?

P粉038161873
P粉038161873

全部回覆(1)
P粉469090753

沒有「行指標」。 PRMARY KEY 的欄位具有在資料的 BTree 中定位行的功能。

當然,透過 PK 查找可以說比「行指標」慢。但更新、刪除、區塊分割等都會自動處理。 (請參閱 Bill 的評論。)這使程式碼更加簡單。而且,在某些情況下,速度會更快。

更快的簡單範例:Given

PRIMARY KEY(id),
INDEX(foo)   -- effectively (foo, id), as discussed above

SELECT id FROM tbl WHERE foo = 123;

在這個例子中,索引的BTree有完整的答案;無需存取資料的 BTree。因此,該索引稱為此 SELECT 的「覆蓋」。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板