我正在使用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/