InnoDB, MyISAM secondary index 理解
来源:3-7 密集索引和稀疏索引的区别
陳彥志
2022-03-15
老師您好,想跟您確認一下我理解的有沒有錯誤。
InnoDB 的 clustered index 葉子節點時儲存數據行;secondary index 的葉子節點則是儲存primary key
MyISAM沒有clustered index, seconddary index的葉子節點是儲存指向數據行的指針而非數據行。
如果我上面理解沒有錯誤的話,,另一個問題是為什麼InnoDB的secondary index的葉子節點不儲存指針呢?
最後一個問題根據老師分享的這篇關於覆蓋索引的文章 https://www.cnblogs.com/happyflyingpig/p/7662881.html
是不是可以理解為覆蓋索引是可以直接從secondary index就可以查到的訊息,而不用回文(再去clustered index找), 例如 帳單表(bill) 有一個複合索引 currency + orderNum,這時候我如果查
select orderNum from bill where currency = ‘RMB’;這時候是不是就不用回文了?
另外如果改成 select * from bill where currency = ‘RMB’;
這時候是不是就需要回文?在這個情況是不是不能稱為覆蓋索引了?
謝謝老師。
1回答
-
翔仔
2022-03-16
同学好,第一个理解基本准确,但是这里说存主键并不仅仅只有主键ID的信息,还会包括指向主键索引的指针
第二个,具体同学可以直接explain去跑跑就知道了,一切以explain的结果为准,mysql会根据实际情况去使用索引,这个说不定的
00
相似问题