SQL 查找是否“存在“,别再 count 了,很耗费时间的!
目前多数人的写法
优化方案
总结
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写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 了,很耗费时间的!相关推荐
- SQL 查找是否“存在“,别再count了
你们查询数据库表中存不存在的某条数据的时候,是不是还在用select count(*) 普通写法 #### SQL写法: SELECT count(*) FROM table WHERE a = 1 ...
- SQL查找是否存在,别再count了,很耗费时间的
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:http://suo.im/5T1tGv 根据某一条件从数据 ...
- SQL 查找是否存在,别再 COUNT 了,很耗费时间的
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写 ...
- idea怎么看sql执行打印_SQL查找是否quot;存在quot;,别再count了,很耗费时间的
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的 ...
- 数据库优化:SQL 查找是否存在,别再 count 了,很耗费时间的!
目前多数人的写法 优化方案 总结 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢? 无论是刚入道的程序员新星,还是精湛沙 ...
- SQL 查找是否存在,别再 count 了,很耗费时间的!
作者:程序猿囧途 来源:toutiao.com/i6826511837840802315 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT co ...
- SQL查找是否存在,别再count了!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:http://suo.im/5T1tGv 根据某一条 ...
- SQL 查找重复记录
SQL 查找重复记录 CREATE TABLE product ( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, Pid INT NOT NULL, Pn ...
- 老问题,SQL保存图片。保存以后再读出来,发现stream的大小不一致。虽然老,但没搜到结果。...
老问题,SQL保存图片.保存以后再读出来,发现stream的大小不一致.虽然老,但没搜到结果. Delphi / Windows SDK/API http://www.delphi2007.net/D ...
- 【MySQL】基于MySQL的SQL优化(二)——对count()、max()的优化
*本文章使用数据均来自MySQL样本数据库Sakila,参考:https://blog.csdn.net/tanglei6636/article/details/93042010 max(): 通过一 ...
最新文章
- DropDownList动态添加新项并位于第一项 ASP.NET控件应用
- 推荐 9 个 爱不释手的 JSON 工具!
- mysql使用参数指定用户_mysql-用户账号及权限管理
- uwsgi和nginx的故事
- 26.课时26.【Django模版】if标签使用详解(Av61533158,P26)
- 关于redis集群脑裂及其解决方案
- python依赖注入_什么是依赖注入?
- 设计模式(五) 注解方式实现AOP
- JavaScript实现消消乐-源代码
- 深度学习涉及到的线性代数知识点总结(二)
- Hello,programer! 我的第一篇博客
- 移动硬盘在电脑上显示为本地磁盘并且出现打不开的情况
- 【2012年中山纪念中学信息学竞赛初一选拔赛一】纪中篮球联赛(b)
- 一张金融IC卡的交易流程(二)-----基本测试环境及借贷记交易流程(银联,交通部均为此流程)
- python爬虫百度安全验证_爬虫黑科技-绕开百度人机验证
- 如何给信号加噪声,matlab
- 【零基础】从零开始学神经网络《python神经网络编程》——手写数字识别实战
- 机器学习:DeepMind和OpenAI身后的两大RL流派有什么具体的区别?
- Go语言上手(一) | 青训营笔记
- underscore函数节流