我正在使用InnoDB。

如果我有类似的数据

[PKID : ?] col1
---------------
[PKID : 1] 7
[PKID : 2] 7
[PKID : 3] 5
[PKID : 4] 5
[PKID : 5] 7


并且B + Tree索引为col1。就像这样:

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从PRIMARY索引中获取字段。

但是为了获得最佳读取效果,可以对其进行排序。

应该可以检查一下。从次要索引读取的SELECT之后,检查Handler_read_rnd_next是否增加。如果是这样,则也将对PK值进行排序。

关于mysql - MySQL/InnoDB-叶节点中PK的顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28678629/

10-09 14:38