• 目前多数人的写法
  • 优化方案
  • 总结

根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写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,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了

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

总结

根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。

SQL 查找是否“存在“,别再 count 了,很耗费时间的!相关推荐

  1. SQL 查找是否“存在“,别再count了

    你们查询数据库表中存不存在的某条数据的时候,是不是还在用select count(*) 普通写法 #### SQL写法: SELECT count(*) FROM table WHERE a = 1 ...

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

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

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

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

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

    根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的 ...

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

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

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

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

  7. SQL查找是否存在,别再count了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:http://suo.im/5T1tGv 根据某一条 ...

  8. SQL 查找重复记录

    SQL 查找重复记录 CREATE TABLE product (  ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL,  Pid INT NOT NULL,  Pn ...

  9. 老问题,SQL保存图片。保存以后再读出来,发现stream的大小不一致。虽然老,但没搜到结果。...

    老问题,SQL保存图片.保存以后再读出来,发现stream的大小不一致.虽然老,但没搜到结果. Delphi / Windows SDK/API http://www.delphi2007.net/D ...

  10. 【MySQL】基于MySQL的SQL优化(二)——对count()、max()的优化

    *本文章使用数据均来自MySQL样本数据库Sakila,参考:https://blog.csdn.net/tanglei6636/article/details/93042010 max(): 通过一 ...

最新文章

  1. DropDownList动态添加新项并位于第一项 ASP.NET控件应用
  2. 推荐 9 个 爱不释手的 JSON 工具!
  3. mysql使用参数指定用户_mysql-用户账号及权限管理
  4. uwsgi和nginx的故事
  5. 26.课时26.【Django模版】if标签使用详解(Av61533158,P26)
  6. 关于redis集群脑裂及其解决方案
  7. python依赖注入_什么是依赖注入?
  8. 设计模式(五) 注解方式实现AOP
  9. JavaScript实现消消乐-源代码
  10. 深度学习涉及到的线性代数知识点总结(二)
  11. Hello,programer! 我的第一篇博客
  12. 移动硬盘在电脑上显示为本地磁盘并且出现打不开的情况
  13. 【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中篮球联赛(b)
  14. 一张金融IC卡的交易流程(二)-----基本测试环境及借贷记交易流程(银联,交通部均为此流程)
  15. python爬虫百度安全验证_爬虫黑科技-绕开百度人机验证
  16. 如何给信号加噪声,matlab
  17. 【零基础】从零开始学神经网络《python神经网络编程》——手写数字识别实战
  18. 机器学习:DeepMind和OpenAI身后的两大RL流派有什么具体的区别?
  19. Go语言上手(一) | 青训营笔记
  20. underscore函数节流

热门文章

  1. mac下cocos2dx(带jsoncpp第三方库)编译为android项目心得
  2. android布局配置
  3. 实现最小宽度的几种方法及CSS Expression
  4. 贝塞尔曲线的css实现——淘宝加入购物车基础动画
  5. docker的核心原理-cgroup
  6. QT开发(三十四)——QT多线程编程
  7. 给初学者的20个CSS实用建议
  8. WCF-006:服务端类的封装问题
  9. delphi中的Format函数详解
  10. 13.TCP/IP 详解卷1 --- IGMP : Internet 管理组协议