MySQL学习之执行计划

本文深入解析SQL执行计划,探讨如何通过执行计划预估SQL语句的执行时间,介绍执行计划的关键概念如explain关键字,以及查询类型、访问方式、索引使用等细节,帮助读者理解并优化数据库查询效率。

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

目录

执行计划

# 执行计划:一个预估SQL语句执行的时间的操作
# 关键字:explain

# 虽然有MySQL优化的措施避免一些不能命中索引的方式,
# 但是最后还是要看SQL语句的运行时间,时间短就是好的。

# 执行计划是以最坏的打算进行预估SQL语句执行的时间,所以只能作为参考。
# 以后拿到一个SQL语句的时候,先进行执行计划。

# explain select * from userinfo;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra

id: 查询顺序的标识
select_type: 查询的类型
            SIMPLE: 简单查询
            PRIMARY: 最外层查询
            SUBQUERY:映射的子查询
            DRIVED: 子查询
            UNION:联合
            UNION RESULT:使用联合的结果
table: 访问的表
partitions:
type: 查询的访问方式
        all < index < range < index_merge < ref_or_null < ref < eq_ref < const/system
        all: 从前往后,全表扫描
            select * from userinfo where uname = 'alex';
            特别的:select * from userinfo where uname = 'alex' limit 1;
            这句特别快,虽然explain后,type也是all,但这句是找第一个后就不会往后继续扫描了
        index: 全索引扫描
        range: 指定索引范围扫描
            PS: between and / in / >= < <= 特别注意!=>
        index_merge: 索引合并
        ref_or_null:
        ref: 使用索引查询一个或多个值
        eq_ref: 连表时条件onprimary key或者unique
        const: 常量,最多一个匹配行
        system: 仅一个匹配行
possible keys: 可能使用的索引
key: 真实使用的索引
key_len: 索引使用的长度
ref:
rows: 找到所需的行所读取的行数
filtered:
Extra:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值