学习计划 mysql explain执行计划任务详解
我们在之前已经找到了需要优化的SQL,但是怎么知道它的那些方面需要优化呢?
explain就是为了这个使用的。
explain显示了 mysql 如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
--
用法:
在你的SQL前面套上explain就好了。
1 2 3 4 5 6 7 | mysql> explain select * from rental; +----+-------------+--------+------------+------+---------------+------+---------+------+-------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+--------+------------+------+---------------+------+---------+------+-------+----------+-------+ | 1 | SIMPLE | rental | NULL | ALL | NULL | NULL | NULL | NULL | 16008 | 100.00 | NULL | +----+-------------+--------+------------+------+---------------+------+---------+------+-------+----------+-------+ 1 row in set, 1 warning (0.00 sec) |
--
ID
SELECT识别符。这是SELECT的查询序列号。不重要,需要注意的是,不要把id当成执行顺序,这并不准确。
--
SELECT_TYPE,TYPE 类型分为多种。
SIMPLE
简单查询,指示非子查询和union的简单查询。
--
TABLE
也就是所查询的表名。
--
PARTITIONS
--
TYPE
最重要的列,显示连接了哪种类型。
从最好到最差的连接类型为:const > eq_reg > ref > range > index > ALL
--
POSSIBLE_KEYS
显示可能应用在这张表上的索引,如果为空,则没有可能的索引。
--
KEY
实际使用的索引,如为空,则没有使用索引。
--
KEY_LEN
使用索引长度,在不损失精确性下,索引越短越好
--
REF
显示索引的那一列被使用了,如果坑你,是一个常数。
--
ROWS
mysql认为必须检查的,用来返回请求数据的行数。
--
这里只是做一个大纲,明天开始对各个细节开始做详细的学习。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?