速读摘要文章源自JAVA秀-https://www.javaxiu.com/8519.html
业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。文章源自JAVA秀-https://www.javaxiu.com/8519.html
原文约 822 字 | 图片 2 张 | 建议阅读 2 分钟 | 评价反馈文章源自JAVA秀-https://www.javaxiu.com/8519.html
SQL 查找是否"存在",别再 count 了,很耗费时间的!
戳一戳→ 程序员的成长之路 文章源自JAVA秀-https://www.javaxiu.com/8519.html
文章源自JAVA秀-https://www.javaxiu.com/8519.html
程序员的成长之路文章源自JAVA秀-https://www.javaxiu.com/8519.html
互联网/程序员/技术/资料共享 文章源自JAVA秀-https://www.javaxiu.com/8519.html
关注文章源自JAVA秀-https://www.javaxiu.com/8519.html
阅读本文大概需要 2 分钟。文章源自JAVA秀-https://www.javaxiu.com/8519.html
来自:https://zhuanlan.zhihu.com/p/158794137文章源自JAVA秀-https://www.javaxiu.com/8519.html
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?文章源自JAVA秀-https://www.javaxiu.com/8519.html
无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count文章源自JAVA秀-https://www.javaxiu.com/8519.html
目前多数人的写法
多次REVIEW代码时,发现如现现象:文章源自JAVA秀-https://www.javaxiu.com/8519.html
业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下文章源自JAVA秀-https://www.javaxiu.com/8519.html
#### SQL写法:SELECT count(*) FROM table WHERE a = 1 AND b = 2#### Java写法:int nums = xxDao.countXxxxByXxx(params);if ( nums > 0 ) { //当存在时,执行这里的代码} else { //当不存在时,执行这里的代码}
是不是感觉很OK,没有什么问题文章源自JAVA秀-https://www.javaxiu.com/8519.html
优化方案
推荐写法如下:文章源自JAVA秀-https://www.javaxiu.com/8519.html
#### 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
,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了文章源自JAVA秀-https://www.javaxiu.com/8519.html
业务代码中直接判断是否非空即可文章源自JAVA秀-https://www.javaxiu.com/8519.html
总结
根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。文章源自JAVA秀-https://www.javaxiu.com/8519.html
<END>文章源自JAVA秀-https://www.javaxiu.com/8519.html
推荐阅读:文章源自JAVA秀-https://www.javaxiu.com/8519.html
柬埔寨开发offer到手,薪资翻倍,去吗?网友:面向阎王编程...文章源自JAVA秀-https://www.javaxiu.com/8519.html
面试必问!JDK 中定时器是如何实现的?文章源自JAVA秀-https://www.javaxiu.com/8519.html
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
文章源自JAVA秀-https://www.javaxiu.com/8519.html
获取方式:点个「在看」,点击上方小卡片,进入公众号后回复「面试题」领取,更多内容陆续奉上。文章源自JAVA秀-https://www.javaxiu.com/8519.html
朕已阅 文章源自JAVA秀-https://www.javaxiu.com/8519.html

评论