前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >count(*) VS limit 1 ,效率评测!

count(*) VS limit 1 ,效率评测!

作者头像
Java小咖秀
发布2020-07-03 15:31:15
1.6K0
发布2020-07-03 15:31:15
举报
文章被收录于专栏:Java冰冻三尺Java冰冻三尺

❝之前发过一个文章SQL查找是否"存在",别再count了,很耗费时间的,小伙伴之前问我能不能出一个实际的测评啊,安排。❞

就是是否存在两种SQL的写法:

count()
代码语言:javascript
复制
SELECT count(*) FROM table WHERE a = 1 AND b = 2
limit 1
代码语言:javascript
复制
SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

测评前提

引擎 : INNODB
表结构

先来看下表结构,并没有设置太复杂的。

explain

聪明的大家都会先explain一下,那就给大家看下。

limit
count(*)

是的,相信大家看出来了,并没什么区别。那就实际数据开搞吧。

测评开始

第一轮测试

先插入它1000条数据看下。

count(*)
limit 1

第二轮测试

其实这么看结果还挺明显的。继续测试,再来插入10000条数据我们来看一下。

count(*)
limit 1

经过第二轮的测试感觉时间差不多了。继续测。

第三轮测评

继续第三轮插入10万条看一下。

这执行已经有点卡了,我们稍微等一下,喝一杯茶。

OK,数据到位了。再来测一下。

count(*):
limit 1:

这轮下来limit 1 占据了上风的感觉。

第4轮测评

ok,继续第4轮的测评,再插入10万条吧,毕竟一次6分钟。

count(*)
limit 1

现在越来越倾向于limit 1了。测试继续。

第5轮测试

继续插入10万条数据。

count(*)
limit 1

第6轮测试

再插入20万条数据。

count(*)
limit 1

image

都到这了,也不能偷懒,继续测。

第7轮测试

再插入20万条数据。

count(*)
limit 1

效果更加明显了,继续吧,那就。

第8轮测试

再插入20万条数据。

count(*)
limit 1

第9轮测试

最后一轮了,再插入10万条数据。

count(*)
limit 1

其实结果已经很明显,小编再把所有的测评结果总结到表格中,铁证如山。

这结果可以说limit 1 取得了最终的胜利。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA小咖秀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 就是是否存在两种SQL的写法:
  • 测评前提
    • 引擎 : INNODB
      • 表结构
      • 测评开始
        • 第一轮测试
          • 第二轮测试
            • 第三轮测评
              • 第4轮测评
                • 第5轮测试
                  • 第6轮测试
                    • 第7轮测试
                      • 第8轮测试
                        • 第9轮测试
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档