关于select from 【表名】where 【字段】= ? limit 1执行效率问题解释

本文探讨了MySQL中SELECT查询的效率问题,特别是涉及LIMIT 1时的情况。通过EXPLAIN分析,了解到访问类型(type)如ALL、INDEX、REF、EQ_REF等对查询性能的影响。当查询条件为主键时,性能通常更好。结论指出,对于只查询一行数据,LIMIT 1的效率提升依赖于查询条件是否为主键。优化查询能显著提升数据库性能。
摘要由CSDN通过智能技术生成

关于MySQL select * from 【表名】where 【字段】= ? limit 1执行效率问题解释

关于select * from 【表名】where 【字段】= ? limit 1执行效率问题

首先可以用explain解析一条sql语句,重点关注访问方式又称访问类型【type】和执行查询行数【rows】

type有一下类型:

  1. all:mysql将遍历全表找到匹配行
  2. index:按索引顺序进行全表匹配
  3. range:有范围的索引烧苗
  4. ref:表示连接匹配条件,既哪些列或常量被用于查找索引列上的值
  5. eq_ref:类似ref,区别在于使用的是唯一索引,对于每个索引键值表中只有一条记录匹配,就是多表连接中使用primary key 或者 unique key作为关联条件
  6. const、system:如果将主键置于where列表中,mysql就能将查询转换为一个常量。system是const类型的特例,当查询的表中只有一行的情况,使用system
  7. NULL:执行时甚至不用访问表或索引,列入从一个索引列里选取最小值可以通过单独索引查找完成。

从上到下性能由差变好


EXPLAIN SELECT * FROM supplier WHERE id = 1 LIMIT 1;

image-20210611154853555

EXPLAIN SELECT * FROM supplier WHERE id = 50;

image-20210611155724200

EXPLAIN SELECT * FROM supplier WHERE name = "Vitae ABCD" LIMIT 1;

image-20210611155120146

EXPLAIN SELECT * FROM supplier WHERE name = "Vitae ABCD";

image-20210611155652507

所以,我认为当只查询一条语句的时候,不管有没有limit 1 效率都不会提高,而在于where后面字段是否为主键,如果为主键,才会提高,不为主键就不会提高。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值