【发布时间】:2020-10-12 04:35:06
【问题描述】:
较新版本的 MySQL,尤其是 v8.0,支持 DESC 索引。不幸的是,由于我的云托管平台,我被 MySQL 5.7 及其 ASC 索引卡住了。
据我了解,索引可以大大加快排序速度。我有一个包含数百万行的表,我的大部分排序都是 DESC。
有什么方法可以对我定期排序的列进行索引以实现极快的 DESC 排序?首先想到的是将我想要排序的整数值存储为负数.
【问题讨论】:
-
负值是你最好的选择。我不知道为什么 MySQL 不知道如何向后读取索引。这并不是什么大创新。
-
@GordonLinoff 显然 MySQL 足够聪明,可以向后读取索引。
-
。 .如果是,那么降序排序应该使用索引。
-
如果使用索引按一列升序排序,同一索引的第二列降序排序,可能会有所收获。但即便如此,您仍在对内存甚至可能是 cpu d-cache 进行一些额外的扫描。 @Rage 想展示一些查询、表结构 (
SHOW CREATE TABLE {tablename})、EXPLAIN {query}、查询时间测量,并查看使用 generated columns indexed 的第二个“假” desc 索引是否有所作为?
标签: mysql sql database indexing database-design