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

眾所周知,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的「覆蓋」。

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!