您现在的位置是:网站首页> 编程资料编程资料
SQL判断是否"存在",还在用 count 操作?很耗时的!_MsSql_
                     2023-05-26
                536人已围观
                
                2023-05-26
                536人已围观
            
简介 SQL判断是否"存在",还在用 count 操作?很耗时的!_MsSql_
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写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判断是否"存在"内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
                
                
相关内容
- sql server把退款总金额拆分到尽量少的多个订单中详解_MsSql_
- SQLServer设置客户端使用IP地址登录的图文详解_MsSql_
- 浅析SQL Server授予了CREATE TABLE权限但是无法创建表_MsSql_
- SQL Server 批量插入数据的完美解决方案_MsSql_
- SQL server分页的4种方法示例(很全面)_MsSql_
- group by 按某一时间段分组统计并查询(推荐)_MsSql_
- 详解安装sql2012出现错误could not open key...解决办法_MsSql_
- SQL SERVER迁移之更换磁盘文件夹的完整步骤_MsSql_
- 详解GaussDB(DWS) explain分布式执行计划的示例_MsSql_
- 解决sql server保存对象字符串转换成uniqueidentifier失败的问题_MsSql_
 
                                
                                                         
                                
                                                         
                                
                                                         
 
    