我正在使用 InnoDB。
如果我有这样的数据
[PKID : ?] col1
---------------
[PKID : 1] 7
[PKID : 2] 7
[PKID : 3] 5
[PKID : 4] 5
[PKID : 5] 7
并且具有 col1 的 B+Tree 索引。它会是这样的:
5(PKID : 3 or 4) - 5(PKID : 3 or 4) - 7 (PKID : 1 or 2 or 5) - 7 (PKID : 1 or 2 or 5) - 7 (PKID : 1 or 2 or 5)
我想知道聚集索引是否始终按 PKID 排序,如下所示:
5(PKID : 3) - 5(PKID : 4) - 7 (PKID : 1) - 7 (PKID : 2) - 7 (PKID : 5)
谢谢。
最佳答案
原则上,InnoDB不需要在二级索引中进行PK排序。对于辅助索引中的每条记录,它调用 Handler_read_rnd 来从主索引中获取字段。
但为了获得最佳读取效果,它可能会对它进行排序。
应该可以检查一下。在从二级索引读取的 SELECT 操作之后,检查 Handler_read_rnd_next 是否增加。如果是这样,那么 PK 值也会排序。
关于MySQL/InnoDB - 叶节点中的 PK 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678629/