返回顶部
首页 > 资讯 > 数据库 >MySQL 8.0中skip scan成功触发方法
  • 164
分享到

MySQL 8.0中skip scan成功触发方法

2024-04-02 19:04:59 164人浏览 八月长安
摘要

本文主要给大家简单讲讲Mysql 8.0中skip scan成功触发方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql 8.0中skip scan

本文主要给大家简单讲讲Mysql 8.0中skip scan成功触发方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql 8.0中skip scan成功触发方法这篇文章可以给大家带来一些实际帮助。

先来个示例:

mysql> CREATE TABLE t1 (f1 INT NOT NULL, f2 INT NOT NULL, PRIMARY KEY(f1, f2));
mysql> INSERT INTO t1 VALUES
    ->   (1,1), (1,2), (1,3), (1,4), (1,5),
    ->   (2,1), (2,2), (2,3), (2,4), (2,5);
mysql> INSERT INTO t1 SELECT f1, f2 + 5 FROM t1;
mysql> INSERT INTO t1 SELECT f1, f2 + 10 FROM t1;
mysql> INSERT INTO t1 SELECT f1, f2 + 20 FROM t1;
mysql> INSERT INTO t1 SELECT f1, f2 + 40 FROM t1;

mysql> desc SELECT f1, f2 FROM t1 WHERE f2 > 40;
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+----------------------------------------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref  | rows | filtered | Extra                                  |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+----------------------------------------+
|  1 | SIMPLE      | t1    | NULL       | range | PRIMARY       | PRIMARY | 8       | NULL |   53 |   100.00 | Using where; Using index for skip scan |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+----------------------------------------+
1 row in set, 1 warning (0.00 sec)

上述skip scan过程:

(1)Get the first distinct value of the first key part (f1 = 1).

(2)Construct the range based on the first and second key parts (f1 = 1 AND f2 > 40).

(3)PerfORM a range scan.

(4)Get the next distinct value of the first key part (f1 = 2).

(5)Construct the range based on the first and second key parts (f1 = 2 AND f2 > 40).

(6)Perform a range scan.


skip scan触发条件

(1)必须是联合索引

(2)只能是一个表

(3)不能使用distinct或group by ;

(4)SQL不能回表,即select列和where条件列都要包含在一个索引中

(5)默认optimizer_switch='skip_scan=on'开启;

mysql> desc SELECT distinct f1,f2 FROM t1 WHERE f2 > 40;
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref  | rows | filtered | Extra                    |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
|  1 | SIMPLE      | t1    | NULL       | index | PRIMARY       | PRIMARY | 8       | NULL |  160 |    33.33 | Using where; Using index |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> desc SELECT  f1, f2 FROM t1 WHERE f2 > 40;
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref  | rows | filtered | Extra                    |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
|  1 | SIMPLE      | t1    | NULL       | index | NULL          | PRIMARY | 8       | NULL |  160 |    33.33 | Using where; Using index |
+----+-------------+-------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> desc select dept_no,emp_no from dept_emp2 where emp_no>30000;
+----+-------------+-----------+------------+-------+---------------+-------------+---------+------+--------+----------+----------------------------------------+
| id | select_type | table     | partitions | type  | possible_keys | key         | key_len | ref  | rows   | filtered | Extra                                  |
+----+-------------+-----------+------------+-------+---------------+-------------+---------+------+--------+----------+----------------------------------------+
|  1 | SIMPLE      | dept_emp2 | NULL       | range | ix_dept_emp   | ix_dept_emp | 16      | NULL | 110324 |   100.00 | Using where; Using index for skip scan |
+----+-------------+-----------+------------+-------+---------------+-------------+---------+------+--------+----------+----------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> desc select dept_no,emp_no,to_date from dept_emp2 where emp_no>30000;
+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+
| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows   | filtered | Extra       |
+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+
|  1 | SIMPLE      | dept_emp2 | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 331008 |    33.33 | Using where |
+----+-------------+-----------+------------+------+---------------+------+---------+------+--------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

MySQL 8.0中skip scan成功触发方法就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的数据库。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 8.0中skip scan成功触发方法

本文链接: https://lsjlt.com/news/35469.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL 8.0中skip scan成功触发方法
    本文主要给大家简单讲讲MySQL 8.0中skip scan成功触发方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL 8.0中skip scan...
    99+
    2024-04-02
  • 使用mysql触发器的方法
    这篇文章主要讲解了使用mysql触发器的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。什么是触发器:触发器用来在某些操作之后,“自动”执行一些操作。(比如插入了新的学生信息...
    99+
    2024-04-02
  • mysql删除触发器的方法
    mysql删除触发器的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql删除触发器的方法:直接执行【drop t...
    99+
    2024-04-02
  • mysql触发器的使用方法
    本篇内容主要讲解“mysql触发器的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql触发器的使用方法”吧!说明触发器可以帮助应用于数据库,以确保数据的完整性、日志记录、数据验证等...
    99+
    2023-06-20
  • MySQL触发器中参数的使用方法
    MySQL触发器是一种在数据库管理系统中用于监控特定表的操作,并根据预定义的条件执行相应操作的特殊程序。在创建MySQL触发器时,我们可以使用参数来灵活地传递数据和信息,让触发器更具通...
    99+
    2024-04-02
  • MySql视图触发器存储方法
    这篇文章主要讲解了MySql视图触发器存储方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。视图:  一个临时表被反复使用的时候,对这个临时表起一个别名,方便以后使用,就可以创...
    99+
    2024-04-02
  • MySQL中的触发器和事件的使用方法
    MySQL是一种常用的关系型数据库管理系统,其强大的功能和灵活的使用方式使得它成为了众多开发者和企业的首选。在MySQL中,触发器和事件是两个重要的概念,它们能够实现诸如数据监控、数据完整性保护、数据同步等功能。本文将介绍MySQL中触发器...
    99+
    2023-10-22
    MySQL触发器 Mysql事件 触发器使用方法
  • 在Ubuntu 18.04中安装MySQL 8.0的方法
    这篇文章主要介绍在Ubuntu 18.04中安装MySQL 8.0的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL社区服务器是一个免费的开源、流行、跨平台的数据库管理系...
    99+
    2024-04-02
  • mysql查询触发器的方法是什么
    要查询 MySQL 中的触发器,可以使用以下命令: SHOW TRIGGERS; 这条命令将列出当前数据库中所有的触发器,包括它们...
    99+
    2024-04-22
    mysql
  • mysql 触发器创建与使用方法示例
    本文实例讲述了mysql 触发器创建与使用方法。分享给大家供大家参考,具体如下: 什么是触发器  触发器用来在某些操作之后/之前,“自动”执行一些操作。(比如插入了新的学生信息,那么在班级表中应该修改...
    99+
    2022-05-16
    mysql 触发器
  • Mysql中的触发器的语法是什么
    这篇文章主要介绍“Mysql中的触发器的语法是什么”,在日常操作中,相信很多人在Mysql中的触发器的语法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql中的触发器的语法是什么”的疑惑有所帮助!...
    99+
    2023-07-02
  • Android连接MySQL方法,测试成功
      使用jdbc,代码如下:   package com.example.mysql;   import java.sql.Connection;   import ...
    99+
    2022-06-06
    测试 Mysql Android
  • MySQL数据库成功登录方法
    本文主要给大家介绍MySQL数据库成功登录方法,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL数据库成功登录方法吧。在数据库变更, 维护等工...
    99+
    2024-04-02
  • 高成功率的PHP直播功能开发方法
    随着互联网的普及和带宽的提高,直播功能在各种应用中越来越受到广泛关注和应用。为满足市场需求,越来越多的网站和应用开始开发直播功能。本文就介绍一种使用PHP技术开发高成功率的直播功能的方法。一、选择开发框架为了快速高效地开发直播功能,并且能够...
    99+
    2023-05-22
    PHP编程 直播功能开发 成功率优化
  • MySQL触发器的定义与使用方法详解
    MySQL触发器的定义与使用方法详解 MySQL触发器是一种特殊的存储过程,可以在表发生特定事件时自动执行。触发器可以用于实现 数据的自动化处理、数据一致性维护等功能。本文将详细介绍...
    99+
    2024-03-15
    mysql 使用 触发器 sql语句
  • 数据库中触发器的使用方法
    本篇文章给大家分享的是有关数据库中触发器的使用方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建数据库触发器的语法是:【CREATE &l...
    99+
    2024-04-02
  • Mysql中的触发器定义及语法介绍
    目录1.定义:2.语法:3.删除触发器4.查询触发器5.触发器类型OLD和NEW的使用1.定义:   触发器和存储过程相似,都是嵌入到 mysql 中的一段程序。触发器是由事件来触发某个操作。当数据库执行这些事件时,就会...
    99+
    2022-06-23
    mysql触发器
  • MySQL触发器同步数据库的方法是什么
    MySQL触发器是一种用于在数据库中自动执行特定操作的机制。通过使用触发器,可以在数据库中的特定事件发生时自动更新或同步数据。 要在...
    99+
    2023-10-24
    mysql 数据库
  • input标签checkbox选中触发事件的方法
    您可以使用JavaScript来监听checkbox的选中状态,并在选中时触发相应的事件。下面是一个示例代码:HTML代码:```h...
    99+
    2023-10-12
    checkbox
  • 验证mysql是否安装成功的方法
    MySQL安装完成后,用户可以通过 DOS 窗口或者 MySQL 5.7 Command Line Client 验证 MySQL 是否安装成功。 DOS窗口验证 步骤 1):打开 DOS 窗口,如果你配置了 MyS...
    99+
    2022-06-01
    mysql 验证安装
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作