10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 41.1 mb
PDF (A4)- 41.2 mb
PDF (RPM)- 39.8 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.6 mb
HTML下载(RPM)- 8.1 mb
手册(TGZ)- 260.5 kb
手册(Zip)- 371.7 kb
信息(Gzip)- 3.9 mb
信息(邮政编码)- 3.9 mb
本手册节选

8.3.13索引降序

MySQL支持降序索引:DESC在索引中,定义不再被忽略,而是导致按降序存储键值。以前,可以反向扫描索引,但会造成性能损失。降序索引可以按正向顺序扫描,这样效率更高。降序索引还使优化器可以使用多列索引,当最有效的扫描顺序混合了某些列的升序和其他列的降序时。

考虑下面的表定义,它包含两列和四个两列索引定义,用于列上升序和降序索引的各种组合:

CREATE TABLE t (c1 INT, c2 INT, INDEX idx1 (c1 ASC, c2 ASC), INDEX idx2 (c1 ASC, c2 DESC), INDEX idx3 (c1 DESC, c2 DESC), INDEX idx4 (c1 DESC, c2 DESC));

表定义产生了四个不同的索引。优化器可以对每个命令从句和不需要使用filesort操作:

ORDER BY c1 ASC, c2 ASC——优化器可以使用idx1 ORDER BY c1 DESC, c2 DESC——优化器可以使用idx4 ORDER BY c1 ASC, c2 DESC——优化器可以使用idx2 ORDER BY c1 DESC, c2 ASC——优化器可以使用idx3

降序索引的使用符合以下条件:

  • 只支持降序索引InnoDB存储引擎,有以下限制:

    • 如果二级索引包含降序索引键列,或者如果主键包含降序索引列,则不支持更改缓冲。

    • InnoDBSQL解析器不使用降序索引。为InnoDB全文搜索,这意味着索引需要上FTS_DOC_ID不能将索引表的列定义为降序索引。有关更多信息,请参见第15.6.2.4节“InnoDB全文索引”

  • 对于升序索引可用的所有数据类型,都支持降序索引。

  • 对普通(非生成的)和生成的列支持降序索引虚拟而且存储).

  • 截然不同的可以使用包含匹配列的任何索引,包括降序键部分。

  • 不使用具有降序键部分的索引MIN ()/MAX ()优化调用聚合函数但没有集团条款。

  • 支持降序索引BTREE但不是哈希索引。不支持降序索引全文空间索引。

    显式指定ASC而且DESC指示器的哈希全文,空间索引会导致错误。