MySQL8新增降序索引

MySQL8新增降序索引

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

一、MySQL5.7 降序索引

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

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

SHOW CREATE TABLE t_desc_index

MySQL8新增降序索引

二、MySQL8 降序索引

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

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

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

MySQL8新增降序索引

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

通过降序索引在执行计划中的表现,在 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;

MySQL8新增降序索引

从 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新增降序索引

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

桃花坞里桃花庵

桃花庵里桃花仙

桃花仙人种桃树

又摘桃花卖酒钱

Original: https://www.cnblogs.com/taojietaoge/p/16223469.html
Author: 涛姐涛哥
Title: MySQL8新增降序索引

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611896/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL并行复制(MTS)原理(完整版)

    MySQL 5.6并行复制架构 MySQL 5.7并行复制原理 Master 组提交(group commit) 支持并行复制的GTID slave LOGICAL_CLOCK(由…

    数据库 2023年6月16日
    0117
  • FIO磁盘性能测试工具

    FIO磁盘性能测试工具 简介 一般我们测试硬盘或者存储的性能的时候,会用Linux系统自带的dd命令,因为是自带命令,简单易使用,因此一些客户喜欢使用dd命令来测试磁盘的读写性能。…

    数据库 2023年6月9日
    0109
  • MySQL源码解析之执行计划

    MySQL执行计划介绍 MySQL执行计划代码概览 MySQL执行计划总结 一、MySQL执行计划介绍 在MySQL中,执行计划的实现是基于 JOIN和 QEP_TAB这两个对象。…

    数据库 2023年5月24日
    0106
  • day04-1群聊功能

    多用户即时通讯系统04 4.编码实现03 4.5功能实现-群聊功能实现 4.5.1思路分析 群聊的实现思路和私聊的实现非常类似。 不同的是:私聊时,服务端接收到消息后,只需要找出接…

    数据库 2023年6月11日
    0114
  • 最左前缀有手就会,那索引下推呢?

    联合指数的最左侧前缀原则属于高频面试题,大多数学生都必须知道,但不符合最左侧前缀的部分会发生什么(指数向下推) [En] The leftmost prefix principle…

    数据库 2023年5月24日
    0107
  • Linux–>组管理和权限管理

    在Linux中的每一个用户必须属于一个组,不能独立于组外。 在Linux中每个文件有, 所有者, 所在组, 其他组的概念 查看文件的所有者 ls -ahl 举例: 改变文件所有者 …

    数据库 2023年6月14日
    0151
  • [转]failed to recv data in handshakeReceive2Callback

    一直用的好好地Shadowsocks今天突然发现打不开网页了,看了下日志发现被”failed to recv data in handshakeReceive2Call…

    数据库 2023年6月14日
    0114
  • SpringBoot整合Redis和SpringBoot(SpringCache)整合Redis

    参考博客: https://blog.csdn.net/lingerlan510/article/details/121906813 https://blog.csdn.net/u…

    数据库 2023年6月14日
    0147
  • 详解在Linux中安装配置MySQL

    最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在 Linux中安装配置 MySQL 安装环境 CentOS7 + …

    数据库 2023年6月11日
    0164
  • 建造者设计模式

    可以看到这个学生类的属性是非常多的,所以构造方法不是一般的长,如果我们现在直接通过new的方式去创建: 可以看到,我们光是填参数就麻烦,我们还得一个一个对应着去填,一不小心可能就把…

    数据库 2023年6月14日
    0102
  • knn算法详解

    1.什么是knn算法 俗话说:物以类聚,人以群分。看一个人什么样,看他身边的朋友什么样就知道了(这里并没歧视谁,只是大概率是这样) 对于判断下图绿色的球是哪种数据类型的方法就是根据…

    数据库 2023年6月16日
    0118
  • 解决 IDEA 2021.2.3 新建maven项目只有两个archetype项目模板的问题

    最近把我的 IDEA 版本更新到 2021.2.3 了,发生了一个比较有意思的问题,做个小小的记录 思路分析 在新的 IDEA 中配置完Maven之后,想要创建Maven项目的时候…

    数据库 2023年6月11日
    0102
  • Linux–>开关机+用户管理指令

    shutdown关机 语法: shutdown -h &#x5173;&#x673A;&#x65F6;&#x95F4; now 立刻1 1分种后 s…

    数据库 2023年6月14日
    0124
  • Stack

    供自己巩固集合知识时写的笔记,不会对所有的内容都介绍栈(Stack)是一种后进先出(LIFO:Last In First Out)的数据结构 Stack只有入栈和出栈的操作: 把元…

    数据库 2023年6月9日
    097
  • 数据结构入门之用链表模拟栈

    1:栈的介绍: LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间.往往先把拿出去使用. 其限制是仅允许在表的一端进行插入和删除运算。这一端被称…

    数据库 2023年6月6日
    0109
  • MySQL 的 GRANT和REVOKE 命令

    MySQL 的 GRANT和REVOKE 命令 GRANT – 授权 将指定 &#x64CD;&#x4F5C;&#x5BF9;&#x8C…

    数据库 2023年5月24日
    0155
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球