MySQL 8.0新特性-倒叙索引 desc index

来源:这里教程网 时间:2026-03-01 15:08:04 作者:

官方文档地址: 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操作进行隐式排序

相关推荐