根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?

无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count

目前多数人的写法

多次REVIEW代码时,发现如下现象:

业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下

##### SQL写法:SELECT count(*) FROM table WHERE a = 1 AND b = 2

##### Java写法:int nums = xxDao.countXxxxByXxx(params);if ( nums > 0 ) {       //当存在时,执行这里的代码} else {       //当不存在时,执行这里的代码}

是不是感觉很OK,没有什么问题

优化方案

推荐写法如下:

##### SQL写法:SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

##### Java写法:Integer exist = xxDao.existXxxxByXxx(params);if ( exist != NULL ) {        //当存在时,执行这里的代码} else {       //当不存在时,执行这里的代码}

SQL不再使用count,而是改用 LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了

业务代码中直接判断是否非空即可

推荐实战文章

30 分钟学会如何使用 ShiroJVM 史上最最最完整深入解析5分钟 教大家搭建免费个人博客最详细的IDEA中使用Debug教程300 行代码带你秒懂 Java 多线程!非常有意思的SQL优化经历:从30248.271s到0.001s绝对干货: 在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!

我知道你 在看 

idea怎么看sql执行打印_SQL查找是否quot;存在quot;,别再count了,很耗费时间的相关推荐

  1. 面试官:不会看SQL执行计划,简历也敢写精通SQL优化?

    这是我的第 204 期分享 作者 | 程序员内点事 来源 | 程序员内点事(ID:chengxy-nds) 分享 | Java中文社群(ID:javacn666) 昨天中午在食堂,和部门的技术大牛们坐 ...

  2. SQL查找是否存在,别再count了,很耗费时间的

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:http://suo.im/5T1tGv 根据某一条件从数据 ...

  3. SQL 查找是否存在,别再 COUNT 了,很耗费时间的

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写 ...

  4. 数据库优化:SQL 查找是否存在,别再 count 了,很耗费时间的!

    目前多数人的写法 优化方案 总结 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢? 无论是刚入道的程序员新星,还是精湛沙 ...

  5. SQL 查找是否存在,别再 count 了,很耗费时间的!

    作者:程序猿囧途 来源:toutiao.com/i6826511837840802315 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT co ...

  6. 统计信息:SQL执行优化之密钥

    SQL 执行的指导思想是什么? SQL 执行计划的正确依赖选择依赖于什么?统计信息为什么在 SQL 执行中起到关键性的作用?如何才能自动化收集统计信息?让 一起了解 SQL 执行优化的核心底座. 统计 ...

  7. 一阵骚操作,我把SQL执行效率提高了10000000倍!

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 作者:风过无痕-唐 http://www.cnblogs.com/tangyanbo/p/44 ...

  8. 一通骚操作,我把SQL执行效率提高了10000000倍!

    作者:风过无痕-唐 http://www.cnblogs.com/tangyanbo/p/4462734.html 场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: create ...

  9. mysql中in查询效率低的替代方法_一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍...

    场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: 数据100条 学生表: 数据70000条 学生成绩表SC 数据70w条 查询目的:查找语文考100分的考生 查询语句: selec ...

最新文章

  1. 剑指offer 28:字符串的排列
  2. 我的Java开发学习之旅------JAVA 笔记ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别...
  3. 行为模式之Chain of Responsibility模式
  4. ICSharpCode.SharpZipLib 开源压缩库使用示例
  5. elementUI弹框form多元素表单问题 - 抛砖篇
  6. hashset去重原理_9道Java集合面试题,搞定了再去投简历吧!
  7. 7-4 sdut-运输计费问题 (10 分)python
  8. Linux_基础_软件包管理
  9. PWA 即将终结应用程序商店!
  10. 史上最强春节档来袭!Python 解读哪部影片值得一看?
  11. Android嵌套滑动冲突
  12. 北方民族大学计算机考研专业课,2021北方民族大学专业课考研真题资料汇总!!...
  13. python删除链表_基于Python和C++实现删除链表的节点
  14. C#编写的打印排版控件拖拽软件
  15. 关于连接数据库出现Connection failed: Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方案(最有用)
  16. 扇形导航 html svg
  17. 为什么建议将成员属性设置为私有
  18. 【笔记】玩转CSS3新特性_from_JSPang
  19. 用MySQL模拟消息队列
  20. 卷积神经网络与神经网络,卷积神经网络基础知识

热门文章

  1. 第三次学JAVA再学不好就吃翔(part66)--Pattern类和Matcher类
  2. html怎么实现多语言图片切换,JavaScript实现--中英语言切换功能
  3. python简述文件目录相对路径_【Python】 配置文件相对路径软件自动执行的工作目录...
  4. SAP UI5 应用开发教程之三十三 - SAP UI5 应用的响应式布局特性(Responsiveness)试读版
  5. cache control 里 no-cache 和 no-store 的区别
  6. Spring JDBC 框架一个最简单的Hello World级别的例子
  7. Scala里Unit 与 () Unit的区别
  8. Java和ABAP里的外部类和内部类
  9. why SAP CRM object family error message is filtered out
  10. 阮一峰react demo代码研究的学习笔记 - demo 3 debug