本文主要是介绍mysql select count(*) 优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近一直在做微服务的压测和改善,从代码层面,逻辑层面,结合业务进行了调整,下面是关于sql层面的优化点:
一般我们判断记录是否存在,都会在mapper.xml
中写如下的sql
:
select count(*) from xxx_0000 where is_deleted='N';
使用datagrip
执行上面的sql
,在控制台可以看到如下输出:
返回一条记录,耗时1s 690ms
下面是对这条sql
进行优化的改写:
select count(*) from xxx_0000 where is_deleted='N' limit 1;
同样使用datagrip
执行上述的sql
,可以在控制台看到如下的输出:
相同的表和where
条件,后者只是加了limit 1
,效率提升了不少。
当然是否采用加limit 1
的限制条件,是需要结合业务需求的,如果你count
只是为了判断是否存在记录,那么加上limit 1
,响应时间肯定会有提高,但是如果你count
是为了得到该符合查询条件的个数,那么可能加limit 1
的结果并不是你想要的。
总结:对于sql
的优化,不单单是加索引之类,还需要结合业务需求去优化sql的逻辑和索引字段等。
这篇关于mysql select count(*) 优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!