sql判断_case when嵌套子查询

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约

每日英文

Friendship doubles your joys, and divides your sorrows.

朋友的作用:使你的快乐加倍,痛苦减半。

每日掏心话

有时候,不管你如何努力,他总会离你而去,然后被一个更好的人所代替。无须强求,最美好的总会在不经意间出现。

责编:乐乐

链接:urlify.cn/JjYBJn

程序员小乐(ID:study_tech)第 944 次推文 图源:百度

往日回顾:100 个网络基础知识,看完成半个网络高手

正文

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

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

目前多数人的写法

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

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

SQL写法:

SELECT count(*) FROM table WHERE a = 1 AND b = 2Java写法:

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

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

优化方案

推荐写法如下:

SQL写法:

SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1Java写法:

Integer exist = xxDao.existXxxxByXxx(params);if ( exist != NULL ) {  //当存在时,执行这里的代码} else {  //当不存在时,执行这里的代码}

SQL不再使用count,而是改用LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了。

关注公众号程序员小乐回复关键字“Java”获取Java面试题和答案。

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

总结

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

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,欢迎转发分享给更多人。欢迎加入程序员小乐技术交流群,在后台回复“加群”或者“学习”即可。

猜你还想看

阿里、腾讯、百度、华为、京东最新面试题汇集

汇总一下Intellij IDEA炫酷的插件

痛心!成都一名“程序员”跳楼身亡,网友:生活压力大!

员工去面试等了2小时后怒怼HR:通过了也不会入职,结果蒙了!

关注订阅号「程序员小乐」,收看更多精彩内容

嘿,你在看吗?

上一篇:

下一篇:

相关推荐