MySQL / InnoDB - 叶节点中PK的顺序

时间:2015-02-23 16:38:11

标签: mysql indexing innodb

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

谢谢。

1 个答案:

答案 0 :(得分:0)

原则上,InnoDB不需要在二级索引中排序PK。对于辅助索引中的每条记录,它调用Handler_read_rnd以从PRIMARY索引获取字段。

但是对于最佳读取,它可能会对它进行排序。

应该可以检查一下。在从辅助索引读取的SELECT之后检查Handler_read_rnd_next是否增加。如果是这样,那么PK值也会被排序。