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判断是否"存在"内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:Mysql判断表字段或索引是否存在sql server中判断表或临时表是否存在的方法SQL SERVER先判断视图是否存在然后再创建视图的语句mysql判断字段是否存在的方法SQL判断字段列是否存在的方法mysql中判断记录是否存在方法比较mySQL count多个表的数据实例详解sql中count或sum为条件的查询示例(sql查询count)

  • 本文相关:
  • sql server 复制表从一个数据库到另一个数据库
  • sql的substr()函数使用介绍
  • 使用 top 子句限制update 语句更新的数据
  • 解决sql server保存对象字符串转换成uniqueidentifier失败的问题
  • sql 存储过程批量删除数据的语句
  • sql server代理服务无法启动的解决方法
  • 数据库高并发情况下重复值写入的避免 字段组合约束
  • sql中的left join及on、where条件关键字的区别详解
  • 一句sql把纵向表转为横向表,并分别分组求平均和总平均值
  • sqlserver 时间格式大全
  • 浅谈SQL判断是否存在_Mssql数据库教程
  • 用sql的count查询慢
  • 千万数据 mssql2005 select count(*) 很慢,求高人...
  • 查询用户是否存在的SQL语句优化,是用select count...
  • MSSQL如何查看sql语句执行时间判断执行效率
  • sql 是否存在 count exists
  • SQL 语句判断记录是否存在
  • sql判断记录是否存在 创建
  • sql 判断是否存在,不存在执行下一条语句
  • 用SQL语句判断数据表是否存在
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysql判断表字段或索引是否存在sql server中判断表或临时表是否存在的方法sql server先判断视图是否存在然后再创建视图的语句mysql判断字段是否存在的方法sql判断字段列是否存在的方法mysql中判断记录是否存在方法比较mysql count多个表的数据实例详解sql中count或sum为条件的查询示例(sql查询count)sql server 复制表从一个数据库到另一个数据库sql的substr()函数使用介绍使用 top 子句限制update 语句更新的数据解决sql server保存对象字符串转换成uniqueidentifier失败的问题sql 存储过程批量删除数据的语句sql server代理服务无法启动的解决方法数据库高并发情况下重复值写入的避免 字段组合约束sql中的left join及on、where条件关键字的区别详解一句sql把纵向表转为横向表,并分别分组求平均和总平均值sqlserver 时间格式大全sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据win7系统安装sqlserver2000的详细sql重复记录查询的几种方法sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sqlserver convert 函数测试结果sql server 如何去掉内容里面的html标签详解sqlserver查询表索引sqlserver触发器详解清空数据库中所有表记录 记录id恢复从0开sql 多条件组合查询,并根据指定类别找出sql使用cast进行数据类型转换示例sql server建库、建表、建约束技巧动态sql语句使用心得sqlserver 2000、2005分页存储过程整理
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved