ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

图解Explain的type字段(Mysql)

2022-05-01 19:03:56  阅读:155  来源: 互联网

标签:ref Explain number 索引 book Mysql type EXPLAIN SELECT


在学习explain的时候,感觉比较重要且麻烦的就是type字段,故本文通过图表解释了相关问题。
看前提醒:本文需要B+树基础。

1、基本介绍

1.1表结构介绍

共两个表,book与book_order.

表book,id为主键索引.number为普通索引表book_order,id为主键索引

1.2表结构图示

2、结合案例图解

从性能从低到高进行排序

2.1 all

EXPLAIN SELECT * FROM book WHERE NAME = 'book1'

由于B+树的实际数据是存储在主键索引的叶子节点上的,所有就相当于遍历主键索引的叶子节点对应的数据。

按照红线所示顺序遍历

2.2 index

只需要遍历索引树就可以得到所需要的结果,不需要访问具体的数据。

EXPLAIN SELECT COUNT(*) FROM book 
遍历树即可得到所有记录条数

2.3 range

当where语句后面出现>或者<等的时候会出现。

EXPLAIN SELECT * FROM book WHERE id < 2

2.4 ref 与 eq_ref

这两个比较像,首先请看以下语句。

EXPLAIN SELECT * FROM book b,book_order bo WHERE b.number = bo.buy_number

首先执行的是book_order,type为all表示遍历所有的记录。


然后,将每个buy_number作为查询的值放入到book的number索引中进行查找。(从ref字段为bo.buy_number也能看出)

将每个buy_number进行上述过程

如果索引中有多个值与buy_number对应,那么type为ref,如果只有一个值对应,那么结果就是eq_ref。

2.5 const与system

EXPLAIN SELECT * FROM book WHERE id = 2

查找的值为一个常数(2),并且表中有多条记录;若表中只有一条记录,则type为const。

标签:ref,Explain,number,索引,book,Mysql,type,EXPLAIN,SELECT
来源: https://www.cnblogs.com/coder-dai/p/16213649.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有