MySQL8新增降序索引

  桃花坞里桃花庵,桃花庵里桃花仙。桃花仙人种桃树,又摘桃花卖酒钱。

一、MySQL5.7 降序索引

MySQL在语法上很早就已经支持降序索引,但实际上创建的却仍然是升序索引,如下MySQL 5.7 所示,row2字段降序,但是从show create table看 row2 仍然是升序的。

CREATE TABLE t_desc_index ( row1 INT, row2 INT, INDEX idx_row1_row2 ( row1, row2 DESC ) );

SHOW CREATE TABLE t_desc_index 

二、MySQL8 降序索引

在MySQL8中,以同样的方式创建降序索引row2,show create table查看。

SHOW CREATE TABLE t_desc_index\G 看到 KEY ‘idx_row1_row2’(‘row1’,’row2’ DEDC)

8.0中可以看到,row2字段降序,此时为降序索引。

三、新增降序索引有何好处?

通过降序索引在执行计划中的表现,在 t_desc_index 表插入10万条随机数据,在通过 explain 查看各自版本的执行计划。

1、数据准备

插入99999条随机数据,存储过程

CREATE PROCEDURE insert_t_desc_index ( ) BEGIN
DECLARE
i INT DEFAULT 1;
WHILE
i < 100000 DO
INSERT INTO t_desc_index SELECT
rand( ) * 100000,
rand( ) * 100000; SET i = i + 1; END WHILE;
COMMIT;
END;

调用存储过程插入数据。

CALL insert_t_desc_index ( );

2、测试

查询五条数据,根据索引 idx_row1_row2 按照降序顺序排序。

explain select row1, row2 from t_desc_index order by row1 , row2 desc limit 5;

从 explain 解释可以看出,查询五条数据,需要扫描96491 行数据,并且使用了filesort。

降序索引只是对查询中特定的排序顺序有效,即升序索引降序排序反无效,降序索引升序排序无效。如果使用不当,反而查询效率更低,比如上述查询排序条件改为

order by c1 desc, c2 desc

这种情况下只需要扫描 5 行数据:

explain select row1, row2 from t_desc_index order by row1 desc , row2  desc limit 5 ;

综上可知,MySQL8新增降序索引后可以真正意义上的增加查询效率。

桃花坞里桃花庵
桃花庵里桃花仙
桃花仙人种桃树
又摘桃花卖酒钱

最新文章

  1. COGS 2532. [HZOI 2016]树之美 树形dp
  2. MesaSQLite数据库的简单使用方法
  3. centos7删除已经安装的docker
  4. APACHE支持.htaccess以及 No input file specified解决方案
  5. struts2关于package 的 namespace
  6. mysql隔离机制
  7. 7——使用TextView实现跑马灯
  8. LeeCode-Remove Linked List Elements
  9. 在静态方法里调用spring注入的方法
  10. 201521123118《java程序与设计》第8周学习总结
  11. 如何在虚拟机下配置centOS7
  12. Python运维开发基础10-函数基础【转】
  13. laravel队列使用
  14. os.walk() 目录生成器
  15. Docker学习之安装mysql
  16. css 的 conic-gradient 学习
  17. Daily Scrum NO.1
  18. 【Go命令教程】7. go run
  19. golang的urlrouter
  20. resize2fs命令详解

热门文章

  1. linux-安装zookeeper及相关操作
  2. 关于table表格中点击一个按钮获取该行的某一列的值并将其传到模态框的问题解决
  3. java-jsp-learnning
  4. 学习MFS(二)
  5. ArrayList跟LinkedList的区别
  6. 遇到MyBatis-Plus的错误之“Table &#39;mybatis_plus.user&#39; doesn&#39;t exist”
  7. 数据结构:DHUOJ 单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果)
  8. (十)React Ant Design Pro + .Net5 WebApi:后端环境搭建-IdentityServer4(二)授权模式
  9. html5手机页面的那些meta
  10. 阐述在Yii2上实现跳转提示页