Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SQL查找是否"存在",别再count了!

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

作者头像
民工哥
发布于 2020-09-15 03:19:32
发布于 2020-09-15 03:19:32
47900
代码可运行
举报
运行总次数:0
代码可运行

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

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

目前多数人的写法

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##### SQL写法:
SELECT count(*) FROM table WHERE a = 1 AND b = 2

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

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

优化方案

推荐写法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##### 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,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了

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

总结

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

有收获,不要吝啬你的转发和在看。

来源:http://suo.im/5T1tGv

看完本文有收获?请转发分享给更多人

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SQL查找是否"存在",别再count了,很耗费时间的
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写 SQL 的时候,还要 SELECT count(*) 呢?
业余草
2020/07/15
3350
SQL 查找是否"存在",别再 count 了,很耗费时间的!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?
用户5224393
2020/07/30
5.9K0
SQL查找是否"存在",别再count了!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/08/29
4860
SQL查找是否"存在",别再count了!
SQL 查找是否"存在",别再 COUNT 了,很耗费时间的
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT COUNT(*) 呢?
业余草
2020/12/02
5.8K0
SQL查找是否"存在",别再 count 了!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count。
终码一生
2022/04/14
4120
SQL 查找"存在",别再用 count 了,很耗费时间的!
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?
程序员白楠楠
2020/11/17
4300
SQL 查找"存在",别再用 count 了,很耗费时间的!
无需COUNT:如何在SQL中查找是否存在数据
本文将探讨在SQL查询中判断某项数据是否存在的方法,避免频繁使用COUNT函数来统计数据的数量。通过使用更加优雅的查询语句,开发者可以在数据库操作中提高效率和可读性。
猫头虎
2024/04/07
2K0
无需COUNT:如何在SQL中查找是否存在数据
【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day19
比如:select * from t_user where username = '' and password '''or 1 =1#
陶然同学
2023/04/09
6900
【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day19
mysql的SQL_CALC_FOUND_ROWS 使用 类似count(*) 使用性能更高
mysql的SQL_CALC_FOUND_ROWS 使用 类似count(*) 使用性能更高
猿哥
2020/04/10
2K0
【MySQL】count()查询性能梳理
通常情况下,分页接口一般会查询两次数据库,第一次是获取具体数据,第二次是获取总的记录行数,然后把结果整合之后,再返回。
后端码匠
2023/11/12
4290
Beego Models之二对象的 CRUD 操作高级查询
对 object 操作的四个方法 Read / Insert / Update / Delete
若与
2018/08/03
4.6K0
Beego Models之二对象的 CRUD 操作高级查询
Golang 语言 Web 框架 beego v2 之读操作
beego v2.x 和 beego v1.x 在 ORM 上的区别是,beego v2.x 的 ORM 对象被设计为无状态的,它是线程安全的,建议大家在使用时,一个数据库只对应一个 ORM 对象。
frank.
2020/12/08
1.1K0
SQL 进阶技巧(下)
在 SQL 进阶技巧 我们简述了 SQL 的一些进阶技巧,一些朋友觉得不过瘾,我们继续来下篇,再送你 10 个技巧
帅地
2020/05/27
6620
SQL 进阶技巧(下)
SQL优化篇:如何成为一位写优质SQL语句的绝顶高手!
写SQL语句不难,稍微系统学习过数据库相关技术的人都能做到,但想要写好SQL却也不是一件易事,在大多数编写SQL的时候,很多人都是以实现需求为原则去撰写的,当一条SQL写出来之后,只要能满足业务需求就行,不会考虑它有没有优化点,能不能让它跑的更快。
田维常
2023/08/31
1.5K0
SQL优化篇:如何成为一位写优质SQL语句的绝顶高手!
Yii2 使用数据库操作汇总
对象操作 查询 //1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll("username=:name",array(":name"=>$username)); $infoArr= NewsList::model()->findAll("status = '1' ORDER BY id DESC limit 10 "); //2. findAllByPk(该方法是根据主键
botkenni
2019/09/02
6390
SQL系列(三)SQL使用的旁枝末节
这里重点说一下严格模式和非严格模式:Hive在严格模式下查询时,需指定分区(查询分区表时),排序后需增加limit限制,不支持笛卡尔积查询。防止误操作等造成的资源浪费。
HsuHeinrich
2023/02/24
4520
SQL系列(三)SQL使用的旁枝末节
一句SQL,我有6种写法
最近在刷LeetCode中数据库题目时,有一道排名题目,用了6种写法分别代表6种SQL思维来实现,想想也算是有趣。
luanhz
2020/05/14
1.1K0
数据库优化:SQL高性能优化指南,助你成就大神之路!
如果 IN 的参数是(1,2,3)这样的值列表时,没啥问题,但如果参数是子查询时,就需要注意了。比如,现在有如下两个表:
小明互联网技术分享社区
2021/06/24
8900
SQL之CASE WHEN用法详解
[Err] ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
全栈程序员站长
2022/06/24
7050
SQL之CASE WHEN用法详解
MySQL count知多少
统计一个表的数据量是经常遇到的需求,但是不同的表设计及不同的写法,统计性能差别会有较大的差异,下面就简单通过实验进行测试(大家测试的时候注意缓存的情况,否则影响测试结果)。
俊才
2020/04/13
3.5K0
相关推荐
SQL查找是否"存在",别再count了,很耗费时间的
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档