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

哎呀我的天吶發表於2020-04-12

官方文件地址: 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操作進行隱式排序


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2685684/,如需轉載,請註明出處,否則將追究法律責任。

相關文章