点击上方蓝色“方志朋”,选择“设为星标”

回复“666”获取独家整理的学习资料!

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

根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写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,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了

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

总结

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

昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看到。

关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题均附有详细题解过程。很多人表示刷数据结构和算法题效率不高,甚是痛苦。有了这个笔记的总结,对校招和社招的算法刷题帮助之大不言而喻,果断收藏了。

需要刷题笔记PDF文档的小伙伴可以直接长按扫码关注下方二维码,回复 「刷题笔记」 四个字自取:

关注下方公众号

????????????

回复关键字「刷题笔记」,即可下载

笔记版权归原作者所有,转载请注明出处 https://books.halfrost.com/leetcode/

SQL查找是否存在,别再count了!相关推荐

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

    你们查询数据库表中存不存在的某条数据的时候,是不是还在用select count(*) 普通写法 #### SQL写法: SELECT count(*) FROM table WHERE a = 1 ...

  2. SQL查找是否存在,别再count了,很耗费时间的

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:http://suo.im/5T1tGv 根据某一条件从数据 ...

  3. SQL 查找是否存在,别再 COUNT 了,很耗费时间的

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写 ...

  4. idea怎么看sql执行打印_SQL查找是否quot;存在quot;,别再count了,很耗费时间的

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

  5. 数据库优化:SQL 查找是否存在,别再 count 了,很耗费时间的!

    目前多数人的写法 优化方案 总结 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢? 无论是刚入道的程序员新星,还是精湛沙 ...

  6. SQL 查找是否存在,别再 count 了,很耗费时间的!

    作者:程序猿囧途 来源:toutiao.com/i6826511837840802315 根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT co ...

  7. SQL 查找重复记录

    SQL 查找重复记录 CREATE TABLE product (  ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL,  Pid INT NOT NULL,  Pn ...

  8. 老问题,SQL保存图片。保存以后再读出来,发现stream的大小不一致。虽然老,但没搜到结果。...

    老问题,SQL保存图片.保存以后再读出来,发现stream的大小不一致.虽然老,但没搜到结果. Delphi / Windows SDK/API http://www.delphi2007.net/D ...

  9. 【MySQL】基于MySQL的SQL优化(二)——对count()、max()的优化

    *本文章使用数据均来自MySQL样本数据库Sakila,参考:https://blog.csdn.net/tanglei6636/article/details/93042010 max(): 通过一 ...

最新文章

  1. EOS与以太坊有哪些区别? 1
  2. python手机连续点击脚本_selenium+python自动化86-循环点击遇到的坑
  3. mysql工具使用意义_MySQL性能分析、及调优工具使用详解
  4. yum lock 解决方法
  5. 安装开源项目 MultiType (基于 RecyclerView)出现的各种问题 -- 自己的第一篇博客...
  6. MDK4 如何生成bin文件
  7. 双系统引导修复失败进不了系统_教你安装双系统,win7+win10
  8. LeetCode(122)——买卖股票的最佳时机 II(JavaScript)
  9. thinkcmf apache rewrite文件
  10. 4.7 ResNet CNN、tensorflow实现——python实战
  11. show tables mysql_MySQL_解析MYSQL显示表信息的方法,在用mysql时(show tables),有时候 - phpStudy...
  12. 【CSDN软件工程师能力认证学习精选】Python网络编程之初识
  13. hill密码 java_希尔密码(Hill Cipher)的实现
  14. H5调用手机摄像头和相册更换头像
  15. win32面试题总结
  16. 谁动了我的奶酪佳句欣赏
  17. 新技能get√​10个PS加速小技巧让你的PS不再卡
  18. HTML水平垂直居中的四种方式
  19. 【技巧】Vivado 仿真器simulation显示模拟波形图(非数字波形)
  20. BuChain 介绍:视屏讲解

热门文章

  1. 论文《一种金融市场预测的深度学习模型:FEPA》(2)----有效市场假说,预测原则概念及自己的思考
  2. vue-cli脚手架(框架)
  3. 安装mayavi和VTK库的血泪史
  4. Tornado 类与类组合降低耦合
  5. MySQL_数据库操作语句
  6. css3实现3D立体翻转效果
  7. 基于verilog的FPGA编程经验总结(XILINX ISE工具)
  8. 使用Apache cxf 和Spring在Tomcat下发布Webservice指南
  9. 格式化测试数据,组装用于插入表中的sql语句
  10. js 判断 是否为android