图解Explain的type字段(Mysql)
2022/5/1 19:42:37
本文主要是介绍图解Explain的type字段(Mysql),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在学习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对应,那么type为ref,如果只有一个值对应,那么结果就是eq_ref。
2.5 const与system
EXPLAIN SELECT * FROM book WHERE id = 2
查找的值为一个常数(2),并且表中有多条记录;若表中只有一条记录,则type为const。
这篇关于图解Explain的type字段(Mysql)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南