首页 > 数据库 >MySQL基础篇--执行计划扫描方式详解

MySQL基础篇--执行计划扫描方式详解

时间:2022-10-26 15:36:35浏览次数:45  
标签:city -- 扫描 索引 详解 MySQL NULL WHERE DESC

type列

全表扫描 ALL

在查询结果集在达到全表数据>15-30%,优化器有可能会选择全表 。

在查询条件中出现隐式转换 统计信息过旧,不准确。

条件列是函数或者计算。

使用 IS NULL 和 IS NOT NULL 联合索引,前导列。

查询条件出现以下语句(辅助索引列)

USE world DESC city;

DESC SELECT * FROM city WHERE countrycode <> 'CHN';

DESC SELECT * FROM city WHERE countrycode NOT IN ('CHN','USA');

DESC SELECT * FROM city WHERE countrycode LIKE '%CH%';

注意:对于聚集索引列,使用以上语句,依然会走索引 优化器会自动转换为范围查询

RANGE

DESC SELECT * FROM city WHERE id <> 10;

DESC SELECT * FROM city WHERE id != 10;

DESC SELECT * FROM city WHERE id not in (10,20);

索引全扫描 INDEX

二级索引记录比聚簇索引记录小得多,聚簇索引要存储用户定义的所有列,二级索引只需要存放索引列和主键,而且这个过程不用执行回表操作。所以直接扫描全部的二级索引记录比直接扫描全部的聚簇索引成本要小很多。 这种扫描全部二级索引的访问称为index访问方法。

比如:联合索引(a,b,c) select a,b,c from t where b='';

这种破坏了联合索引最左前缀法则,所以优化器会选择index查询方法。

order by 主键是典型的index访问方法。


索引范围扫描 RANGE

使用索引执行查询时,对应的扫描区间为若干个单点扫描区间或者范围扫描区间。(不包含一个单点区间,或者全表范围查询) 这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束语另一点,不用扫描全部索引。

< >= <= between and in or like 索引范围扫描 辅助索引 > < >= <= LIKE IN OR 主键 <> NOT IN

DESC SELECT * FROM city WHERE id<5;

DESC SELECT * FROM city WHERE countrycode LIKE 'CH%'; 

DESC SELECT * FROM city WHERE countrycode IN ('CHN','USA');


辅助索引等值查询 REF

搜索条件为二级索引列与常数进行等值查询比较,形成的扫描区间为单点扫描区间。


非唯一性索引等值查询

desc select * from city where countrycode='CHN';

非唯一性索引扫描,返回匹配某个单独值的所有行. 本质上也是一种索引访问,它返回所有匹配某个单独值的行,然而, 它可能会找到多个符合条件的行,所以他应该属于查找和扫描的混合体。


eq_ref

多表连接,非驱动表连接条件是主键或唯一键。 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键或唯一索引扫描。

DESC SELECT b.name,a.name FROM city AS a 
JOIN country AS b
ON a.countrycode=b.code
WHERE a.population <100;
DESC country

+----+-------------+-------+------------+--------+---------------+---------+---------+---------------------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+--------+---------------+---------+---------+---------------------+------+----------+-------------+
| 1 | SIMPLE | a | NULL | ALL | CountryCode | NULL | NULL | NULL | 4188 | 33.33 | Using where |
| 1 | SIMPLE | b | NULL | eq_ref | PRIMARY | PRIMARY | 3 | world.a.CountryCode | 1 | 100.00 | NULL |
+----+-------------+-------+------------+--------+---------------+---------+---------+---------------------+------+----------+-------------+

ref_or_null

在ref的基础上,同时查找该列中值为null的记录,对应的扫描区间是[NULL,NULL]以及等值的单点扫描区间。 注:在二级索引树的结构上,值为NULL的记录会被放在索引的最左边。

const

通过主键或者唯一二级索引列与常数的等值比较来定位一条记录的访问方法定义为: const 。 mysql> desc select * from city where id=10;


System

表只有一行记录(等于系统表),这是const类型的特列,平时不会出现,这个也可以忽略不计

Const:表示通过索引一次就找到了


扫描方式优劣排名

system>const>eq_ref>ref>range>index>ALL

一般来说,得保证查询至少达到range级别,最好能达到ref。


标签:city,--,扫描,索引,详解,MySQL,NULL,WHERE,DESC
From: https://blog.51cto.com/u_13874232/5797959

相关文章

  • 9个计算机的“网络层”知识点
    摘要:网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。本文分享自华为云社区《计算机的“网络层......
  • 开源主机安全监测工具WGCLOUD有哪些功能
    WGCLOUD的server和agent都需要用户进行本地化部署,WGCLOUD没有云端服务器来管理存贮用户的监测数据,所以用户部署使用完全自主可控WGCLOUD可以在内网、局域网运行,不需要联网,不......
  • N皇后问题--解法一(递归遍历斜线)
    importjava.util.*;importjava.math.*;publicclassSolution{TreeSet<Integer>ready=newTreeSet<Integer>();HashSet<Integer>res=newHashSet<......
  • STW43NM60ND-ASEMI原厂代理意法MOS管STW43NM60ND
    编辑-ZSTW43NM60ND用的TO-247封装,是意法一款汽车级MOS管。STW43NM60ND的漏源导通电阻RDS(on)为0.075Ω,零栅极电压漏极电流(IDSS)为10uA,栅源漏电流(IGSS)为100nA,其工作时耐温度范......
  • 9个计算机的“网络层”知识点
    摘要:网络层介于传输层和数据链路层之间,其主要作用是实现两个网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。本文分享自华为云社区《​​计算机的“网络......
  • Scala-隐式转换
    隐式转换精度小的类型可以自动转换为精度大的类型,这个转换过程无需开发人员参与,由编译器自动完成,这个转换操作我们称之为隐式转换。如果程序编译出错,编译器会尝试在整个......
  • STW78N65M5-ASEMI原厂代理意法MOS管STW78N65M5
    编辑-ZSTW78N65M5用的TO-247封装,是意法一款汽车级MOS管。STW78N65M5的漏源导通电阻RDS(on)为0.024Ω,零栅极电压漏极电流(IDSS)为1uA,栅源漏电流(IGSS)为100nA,其工作时耐温度范围......
  • 【ManageEngine】IT服务管理(ITSM)指南
    IT服务管理(ITSM)是什么IT服务管理(ITservicemanagement简写ITSM)是IT团队向其最终用户提供:设计、交付、管理和改善等所有IT服务的过程。ITSM致力于使IT流程和服务与业务目......
  • 实验7:基于REST API的SDN北向应用实践
    1.编写Python程序,调用OpenDaylight的北向接口实现以下功能(1)利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight搭建拓扑sudomn--topo=single,3--controller=re......
  • 网速一天比一天慢,路由器要不要每天重启?
    路由器知识库,分享电脑,网络小常识,享受科技新生活!大家好,我是路由器知识库的“库哥”,今天分享的小知识是:路由器要不要每天重启?路由器的重要性现在已经是不言而喻的,因为在当下的......