关于博文的澄清
您基本上正在查看的功能是fast index creation
. 此功能加快了对 InnoDB 表的二级索引的创建,但它仅在非常特定的情况下使用。例如,该功能未使用 while OPTIMIZE TABLE
,因此可以通过先删除索引,然后运行OPTIMIZE TABLE
然后重新创建索引来显着加快速度fast index creation
(关于这是您链接的帖子)。
可以通过像上面一样手动使用此功能来改进案例的某种自动化,作为名为expand_fast_index_creation
. 如果激活,服务器应该不仅在非常特殊的情况下使用快速索引创建,而且在所有情况下它都可能有所帮助,例如OPTIMIZE TABLE
- 链接博客文章中提到的问题。
关于你的问题
您的问题实际上是是否可以通过利用磁盘上的局部性以自定义顺序保存 InnoDB 表以加快特定类型的查询。
这是不可能的。InnoDB 行基于聚集索引(本质上是主键)保存在页面中。行/页的顺序可能是混乱OPTIMIZE TABLE
的,InnoDB 表可以做到这一点。使用此命令,表实际上是按主键顺序重新创建的。这允许在相同或相邻页面上收集主键本地行。
这就是你可以强制 InnoDB 做的所有事情。您可以阅读有关 clustered index的手册,手册中的另一页明确回答这是不可能的(“ORDER BY 对于 InnoDB 表没有意义,因为 InnoDB 总是根据聚集索引对表行进行排序。” )和dba.stackexchange 上的相同问题,您可能会感兴趣的答案。