官方文档地址: https://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html Oracle使用desc index的场景很多,这里就不再赘述了,可喜可贺MySQL 8.0开始也有了倒叙索引,使用倒叙索引后,就会避免filesort 操作,执行计划中会看到backward index scan关键字,译为中文就是倒叙索引范围查找
mysql>explain select * from test_backup.paralleltest order by id desc +----+-------------+--------------+------------+-------+---------------+---------+---------+-----+------+----------+---------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+--------------+------------+-------+---------------+---------+---------+-----+------+----------+---------------------+ | 1 | SIMPLE | paralleltest | | index | | PRIMARY | 602 | | 3000 | 100 | Backward index scan | +----+-------------+--------------+------------+-------+---------------+---------+---------+-----+------+----------+---------------------+ 返回行数:[1],耗时:8 ms.
·innodb只是适用于innodb存储引擎,并且受到以下限制: -如果索引包含一个降序键的列,或者主键包含一个降序的索引列,changebuffer不支持 -innodb的sql解析器不使用降序索引 ·降序索引和升序索引一样,支持所有的数据类型 ·distinct可以使用降序索引 ·降序索引支持btree,但是不支持hash索引 ·降序索引不支持全文索引、空间索引·降序索引支持常规索引,和gernerated列(virtual\stored类型的列) ·对于有聚合函数调用,但是没有group by语句时,min()/max()查询优化不会使用带有降序键的索引进行优化 ·降序索引的引入,MySQL 8.0再也不会对group by操作进行隐式排序
