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

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

根据某一条件从数据库表中查询 『有』『没有』 ,只有两种状态,

那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count


8.png

目前多数人的写法


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


SQL写法:
SELECT count(*) FROM table WHERE a = 1 AND b = 2  
Java写法:
int nums = xxDao.countXxxxByXxx(params);  
if ( nums > 0 ) {  
  //当存在时,执行这里的代码  
} else {  
  //当不存在时,执行这里的代码  
}  


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


优化方案


推荐写法如下:


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,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了业务代码中直接判断是否非空即可


9.png


总结


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


2.jpg


如果大家觉得还不错,点赞,收藏,分享,一键三连支持我一下~

目录
相关文章
|
SQL 数据库
SQL查找是否“存在“,别再count了!
SQL查找是否“存在“,别再count了!
|
SQL 数据库 Python
某站点存在SQL注入,直接可进行脱库(实战可参考此方法)
某站点存在SQL注入,直接可进行脱库(实战可参考此方法)
|
2月前
|
SQL 数据库 索引
SQL中COUNT函数结合条件使用的技巧与方法
在SQL查询中,COUNT函数是一个非常常用的聚合函数,用于计算表中满足特定条件的记录数
|
4月前
|
SQL 数据挖掘 BI
【超实用技巧】解锁SQL聚合函数的奥秘:从基础COUNT到高级多表分析,带你轻松玩转数据统计与挖掘的全过程!
【8月更文挑战第31天】SQL聚合函数是进行数据统计分析的强大工具,可轻松计算平均值、求和及查找极值等。本文通过具体示例,展示如何利用这些函数对`sales`表进行统计分析,包括使用`COUNT()`、`SUM()`、`AVG()`、`MIN()`、`MAX()`等函数,并结合`GROUP BY`和`HAVING`子句实现更复杂的数据挖掘需求。通过这些实践,你将学会如何高效地应用SQL聚合函数解决实际问题。
63 0
|
5月前
|
SQL
SQL开发问题之当从数据源读取多个字段时优化 COUNT(DISTINCT ...) 的查询的问题如何解决
SQL开发问题之当从数据源读取多个字段时优化 COUNT(DISTINCT ...) 的查询的问题如何解决
|
6月前
|
SQL Oracle 关系型数据库
SQL COUNT() 函数
SQL COUNT() 函数
54 3
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL优化(3/3)-limit 优化、count 优化、update 优化、SQL优化 小结
MySQL数据库——SQL优化(3/3)-limit 优化、count 优化、update 优化、SQL优化 小结
313 0
|
7月前
|
SQL 关系型数据库 数据处理
详解SQL语句中的GROUP BY和聚合函数COUNT、SUM、AVG、MIN和MAX。
详解SQL语句中的GROUP BY和聚合函数COUNT、SUM、AVG、MIN和MAX。
1137 0
|
SQL 安全 数据库
用友畅捷CRM存在SQL注入漏洞
用友畅捷CRM存在SQL注入漏洞,攻击者可通过使用工具获取数据库相关敏感信息,拿到服务器控制权限。
234 1
|
SQL
删除SQL表数据时存在约束的解决方法
删除SQL表数据时存在约束的解决方法
218 0