explian执行计划
2024-10-01 06:27:54
MySQL为我们提供了 explain 关键字来直观的查看一条SQL的执行计划。
explain显示了MySQL如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。
下面我们使用 explain 做一个查询,如下:
mysql> explain select * from payment;
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+
| 1 | SIMPLE | payment | NULL | ALL | NULL | NULL | NULL | NULL | 16086 | 100.00 | NULL |
+----+-------------+---------+------------+------+---------------+------+---------+------+-------+----------+-------+
1 row in set, 1 warning (0.01 sec)
查询结构中有12列,理解每一列的含义,对理解执行计划至关重要,下面用一个表格的形式进行说明。
列名 | 说明 |
---|---|
id | SELECT识别符,这是SELECT的查询序列号。 |
select_type |
SELECT类型,可以为以下任何一种:
|
table | 输出的行所引用的表 |
partitions | 如果查询是基于分区表的话,显示查询将访问的分区。 |
type |
联接类型。下面给出各种联接类型,按照从最佳类型到最坏类型进行排序:
一般来说,得保证查询至少达到range级别,最好能达到ref。 |
possible_keys | 指出MySQL能使用哪个索引在该表中找到行 |
key | 显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。 |
key_len | 显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。在不损失精确性的情况下,长度越短越好 |
ref | 显示使用哪个列或常数与key一起从表中选择行。 |
rows | 显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。 |
filtered | 显示了通过条件过滤出的行数的百分比估计值。 |
Extra |
该列包含MySQL解决查询的详细信息
|
根据上述表格,可以在执行计划分析上提供很好的帮助。
最新文章
- 【XLL 框架库函数】 TempActiveRef/TempActiveRef12
- phpmyadmin修改root密码
- 从0开始学Java——JSP&;Servlet——Tomcat和Apache的区别
- SecureCRT命令行文字和背景颜色设置
- unity, 同步物体坐标一定要在LateUpdate中进行
- Linux系统ifconfig命令找不到,centos ifconfig Command not found
- arcgis安装问题SDK开始安装不了
- 设计模式(二)The Observer Pattern 观察者模式
- 分布式文件系统 FastDFS Ceph
- Python 第三篇(下):collections系列、集合(set)、单双队列、深浅copy、内置函数
- Maven包装过程中跳过测试
- jquery 高亮
- Java基础总结1
- 吴裕雄 python 机器学习——线性回归模型
- Redis的消息通知
- Exception 07 : org.hibernate.LazyInitializationException: could not initialize proxy - no Session
- oracle 分组查询
- Sphinx/Coreseek 4.1 执行 buildconf.sh 报错,无法生成configure文件
- SQL Server经典函数之数字去零
- docker swarm mode routing mesh 使用
热门文章
- fpga中wire和reg的区别
- oracle一个创建用户、创建表空间、授权、建表的完整过程
- Windows:condition_variable 两个例子
- android:gravity设置居中的问题
- Linux vi的基本操作
- Tensorflow学习(练习)—CPU训练模型
- 如何实现字符串的翻转,不用php库函数翻转字符串
- spring.net 集成nhibernate配置文件(这里暴露了GetCurrentSession 对于 CurrentSession unbond thread这里给出了解决方法)
- IOS GPS跟踪备注
- vitamio遇到的坑,都是不能播放