iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >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成功触发方法

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL触发器中参数的使用方法
    MySQL触发器是一种在数据库管理系统中用于监控特定表的操作,并根据预定义的条件执行相应操作的特殊程序。在创建MySQL触发器时,我们可以使用参数来灵活地传递数据和信息,让触发器更具通...
    99+
    2024-04-02
  • mysql删除触发器的方法
    mysql删除触发器的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql删除触发器的方法:直接执行【drop t...
    99+
    2024-04-02
  • mysql触发器的使用方法
    本篇内容主要讲解“mysql触发器的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql触发器的使用方法”吧!说明触发器可以帮助应用于数据库,以确保数据的完整性、日志记录、数据验证等...
    99+
    2023-06-20
  • 在Ubuntu 18.04中安装MySQL 8.0的方法
    这篇文章主要介绍在Ubuntu 18.04中安装MySQL 8.0的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL社区服务器是一个免费的开源、流行、跨平台的数据库管理系...
    99+
    2024-04-02
  • MySQL中的触发器和事件的使用方法
    MySQL是一种常用的关系型数据库管理系统,其强大的功能和灵活的使用方式使得它成为了众多开发者和企业的首选。在MySQL中,触发器和事件是两个重要的概念,它们能够实现诸如数据监控、数据完整性保护、数据同步等功能。本文将介绍MySQL中触发器...
    99+
    2023-10-22
    MySQL触发器 Mysql事件 触发器使用方法
  • mysql查询触发器的方法是什么
    要查询 MySQL 中的触发器,可以使用以下命令: SHOW TRIGGERS; 这条命令将列出当前数据库中所有的触发器,包括它们...
    99+
    2024-04-22
    mysql
  • Mysql中的触发器的语法是什么
    这篇文章主要介绍“Mysql中的触发器的语法是什么”,在日常操作中,相信很多人在Mysql中的触发器的语法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mysql中的触发器的语法是什么”的疑惑有所帮助!...
    99+
    2023-07-02
  • MySQL触发器的定义与使用方法详解
    MySQL触发器的定义与使用方法详解 MySQL触发器是一种特殊的存储过程,可以在表发生特定事件时自动执行。触发器可以用于实现 数据的自动化处理、数据一致性维护等功能。本文将详细介绍...
    99+
    2024-03-15
    mysql 使用 触发器 sql语句
  • 高成功率的PHP直播功能开发方法
    随着互联网的普及和带宽的提高,直播功能在各种应用中越来越受到广泛关注和应用。为满足市场需求,越来越多的网站和应用开始开发直播功能。本文就介绍一种使用PHP技术开发高成功率的直播功能的方法。一、选择开发框架为了快速高效地开发直播功能,并且能够...
    99+
    2023-05-22
    PHP编程 直播功能开发 成功率优化
  • MySQL触发器同步数据库的方法是什么
    MySQL触发器是一种用于在数据库中自动执行特定操作的机制。通过使用触发器,可以在数据库中的特定事件发生时自动更新或同步数据。 要在...
    99+
    2023-10-24
    mysql 数据库
  • input标签checkbox选中触发事件的方法
    您可以使用JavaScript来监听checkbox的选中状态,并在选中时触发相应的事件。下面是一个示例代码:HTML代码:```h...
    99+
    2023-10-12
    checkbox
  • 查看mysql是否成功启动的方法
    小编给大家分享一下查看mysql是否成功启动的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!查看mysql是否成功启动的方法:首先使用“win+r”快捷键打开“运行”窗口;然后在“运行”窗...
    99+
    2024-04-02
  • mysql 无法成功启动服务的解决方法
    这篇文章主要介绍mysql 无法成功启动服务的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql无法成功启动服务的解决办法:首先将localhost映射的地址注释掉;然...
    99+
    2024-04-02
  • JQuery动态生成的按钮无法触发问题及完美解决方法
    目录起因:原因:解决方法:补充:jquery中动态新增的元素节点无法触发事件解决办法方法一:使用live方法二:使用on起因: 利用JQuery动态添加的按钮无法通过$(select...
    99+
    2023-02-02
    jquery动态生成的按钮无法触发 jquery生成的按钮无法触发 jquery按钮无法触发
  • navicat for mysql连接不成功的解决方法
    这篇文章主要介绍navicat for mysql连接不成功的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!navicat for mysql连接不成功的解决方法:1、登录m...
    99+
    2024-04-02
  • PHP大文件发送不成功的解决方法
    在进行 PHP 程序开发中,经常会遇到需要发送大文件的情况。然而,有时候在尝试发送大文件时会遇到发送不成功的问题。本文将介绍解决 PHP 大文件发送不成功的方法,并提供具体的代码示例供...
    99+
    2024-03-08
    解决方法 大文件处理 php文件发送 内存占用
  • 解决mysql Apply security settings安装不成功的方法
    这篇文章主要讲解了“解决mysql Apply security settings安装不成功的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“解决mysq...
    99+
    2024-04-02
  • Vue中父子组件通信与事件触发的方法
    这篇文章主要讲解了“Vue中父子组件通信与事件触发的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中父子组件通信与事件触发的方法”吧!一、组件子组件<template>...
    99+
    2023-06-29
  • JavaMail 保证邮件发送成功的方法是什么
    JavaMail 保证邮件发送成功的方法是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用过JavaMail的api发送邮件的人可能会有这样一个疑惑:我如何知道我调用...
    99+
    2023-06-17
  • mysql创建触发器报错的原因及解决方法是什么
    MySQL创建触发器报错的原因有很多种,常见的有以下几种情况: 语法错误:在创建触发器的语句中可能存在语法错误,比如缺少分号、括...
    99+
    2023-10-24
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作