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 操作?试试这条 SQL 语句,性能杠杠的!
来源 | https://urlify.cn/JjYBJn 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要select count(*)呢? 无论是刚入道 ...
- oracle如何判断数字中有字母,SQL 判断含有字母和数字的字符串
SQL 判断含有字母和数字的字符串,你想从一个表里筛选出部分行数据,筛选条件是你感兴趣的那个列只包含字母和数字字符,考虑下面的视图 V(SQL Server 用户需要把字符串连接操作符||替换为 +) ...
- sql利用在一条语句中count出不同的条件的值
过多繁琐的sql影响代码质量,及维护成本,以下为两种小技巧处理方式,仅供参考,第二种更美观点 第一种,用case ---when---方法 select id ,sum(case when type ...
- oracle判断非空并拼接,oracle sql 判断字段非空,数据不重复,插入多跳数据
oracle sql 判断字段非空,数据不重复 select distinct(mobile) from wx_user_mobile where active_time is not null ...
- sql判断数据库类型数据_SQL数据类型
sql判断数据库类型数据 SQL | 资料类型 (SQL | Data Types) Just like other programming languages, facilities of defi ...
- sql判断基数_SQL Server中的基数估计框架版本控制
sql判断基数 This is a small post about how you may control the cardinality estimator version and determi ...
- SQL判断某列中是否包含中文字符、英文字符、纯数字,数据截取
SQL判断某列中是否包含中文字符.英文字符.纯数字 一.包含中文字符 select * from 表名 where 列名 like '%[吖-座]%' [吖-座]是中文字符集第一个到最后一个的范围,虽 ...
- SQL 判断字段是否为中文、字母、数字
SQL 判断字段是否为中文.字母.数字 ascii ( col ) 数字:48 - 57 字母:65 - 123 汉字:123+ 如:判断中文 select * from dws_new_role w ...
- 求助多条线段围成的图形判断封闭图形还是非封闭图形
求助多条线段围成的图形判断封闭图形还是非封闭图形 已知多条线段,例如4条,已知第一条长度和相对第二条的顺时针角度,第二条长度和相对第三条的顺时针角度,第三条长度和相对第四条的顺时针角度,第四条长度和角 ...
最新文章
- 皮一皮:当有人在我身边时...
- 【Java规划】DOM XML Parser分解、遍历、创XML
- tcpip c语言程序设计,TCP 服务端和客户端程序设计(C)
- 打造更好用的 EF 自动审计
- (转)公钥,私钥和数字签名这样最好理解
- (四)Qt实现自定义模型基于QAbstractTableModel
- vue computed使用_前端发展方向指南—Vue运行机制
- 从零玩转Webpack4~5+实现原理笔记(二)
- no module named ‘cv2’解决办法
- 老大:用脚本实现Nginx日志每天切分的功能?我:脱了裤子放屁!
- Array对象的三种属性实例
- 19n20c的参数_供应IC芯片 745653-3 329056 品牌、价格、PDF参数 - 电子产品资料
- 项目面试题2:es与solr的区别
- python如何循环sql语句_sql语句的for循环语句怎么写
- 加速度传感器检测物体倾角的原理
- 枚举,联合,宏定义,结构体
- windows客户端通过脚本文件添加信任站点
- 我的sulley安装过程
- 用星号输出一个梯形,如下图所示:(使用嵌套for循环完成)
- 银河移民PHP面试,移民香港,我真的“后悔死了”
热门文章
- python matplotlib.pyplot.scatter() 中的cmap参数是什么意思?
- Python学习笔记(基础知识点二)开更了~
- 初学__Python——Python 可重用结构:Python模块
- 嵌入式linux完整top命令,linux的top命令详解
- 信阳哪些技校有学计算机的,2018年信阳十大技校排名 排名前十的学校有哪些
- java序列化算法透析_Java序列化机制与原理的深入分析
- php请编写一个函数来将一个_为什么开发人员讨厌PHP
- nested exception is java.lang.ClassNotFoundException: Interceptor
- mavne的依赖、继承、聚合
- MySQL5.7 Linux安装流程