MySQL索引-EXPLAIN

本文探讨了如何通过EXPLAIN分析SQL语句执行计划,重点关注id、select_type、type等关键参数,以及如何利用索引提高查询效率,包括全表扫描、索引匹配和使用情况。适合数据库优化者和开发者理解SQL执行细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Explain 使用

EXPLAIN + SQL语句

EXPLAIN SELECT * FROM mk_***_ad_day_main WHERE `ad_id` = '1694**26445' and  `stat_datetime` = '2021-08-13 00:00:00';

 二、参数解释

1、id

优先级和先后顺序
id越大的优先级高,优先级高的先执行
id相同,执行顺序由上到下

 2、select_type

查询的类型
普通查询:simple
子查询:
    primary:存在子查询时,最外层查询select
    subquery:子查询中第一个select
    dependent subquery:子查询中第一个select,依赖于外部子查询
联表:
    union:union中的第二个或后面的select
    dependent union: union中的第二个或后面的select,依赖于外部子查询
派生表:derived

3、table

查询引用的表名

4、type

联接类型
all:全表扫描
ref:匹配索引值
eq_ref:是唯一索引匹配
const:最多有一个匹配行
range:检索给定范围
index:只扫描索引树,比ALL略快
index_merge:使用了索引合并优化方法
index_subquery:索引子查询
unique_subquery:唯一索引子查询

5、possible_keys

"可能"使用的索引

6、key

实际使用索引

 7、key_len

使用索引长度

8、ref

使用的字段或者常量

9、rows

实际扫描行数

10、extra

详细描述
Distinct:匹配到第一行后停止
Not exists:匹配第一个LEFT JOIN查询后停止
range checked for each record (index map: #):没有找到合适的索引
using filesort:额外的排序
Using index:使用索引树查询
Using index condition:先条件过滤索引,再匹配查询过滤
Using where:使用了where
Using temporary:使用了临时表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值