当前位置:   article > 正文

【MySQL笔记】SELECT COUNT(*) 的时候,加不加where条件有差别吗?

【MySQL笔记】SELECT COUNT(*) 的时候,加不加where条件有差别吗?

文章目录

前言

这部分很多帖子都只在问题里罗列下,好像也没详细解答
其实就是跟InnoDB优先走二级索引的优化有关,前面也提到了”优化的前提是查询语句中不包含where条件和group by条件
还不太了解这个优化的朋友可以看上一篇帖子

实验

下面稍微做个小实验:

-- actor_id 为主键索引,last_name 为二级索引,first_name不是索引
explain select count(*) from actor;
explain select count(*) from actor where actor_id > 3;
explain select count(*) from actor where first_name like 'P%';
  • 1
  • 2
  • 3
  • 4

结果如下:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

结论

可以看出:

加了where条件约束会使”优先遍历较小的二级索引计数“的优化失效,具体策略跟约束的字段有关:

  • 如果where的条件是一个主键索引的约束,会走主键索引
  • 如果where的条件不是索引,则会直接全表扫描
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/362541?site
推荐阅读
相关标签
  

闽ICP备14008679号