SQL查找是否“存在”,不再使用count

根据某一条件从数据库表中查询『有』与『没有』,只有两种状态,那为什么在写 SQL 的时候,还要 SELECT COUNT(*) 呢?无论是刚入道的程序员新星,还

大家好,今天来为大家解答SQL查找是否“存在”,不再使用count这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

无论你是新晋明星程序员,还是在该领域摸爬滚打多年的资深程序员,COUNT 总是一样的。

目前大多数人的写作方式

多次REVIEW代码时,发现如下现象: 在业务代码中,无论有多少条记录,都需要根据一个或多个条件来查询一条记录是否存在。

常见的SQL及代码编写方法如下:

#####SQL的写法:SELECTcount(*)FROMtableWHEREa=1ANDb=2#####Java的写法:intnums=xxDao.countXxxxByXxx(params);if(nums0){//存在时执行这里的代码} else{ //当不存在时,执行这里的代码} 感觉还可以吧,没问题吧?

SQL查找是否“存在”,不再使用count

优化方案

推荐的写法如下:

#####SQL写法:SELECT1FROMtableWHEREa=1ANDb=2LIMIT1#####Java写法:Integerexist=xxDao.existXxxxByXxx(params);if(exist!=NULL){//存在时执行这里的代码}else {//不存在时执行这里的代码} SQL不再使用COUNT,而是使用LIMIT 1,这样数据库查询遇到一个就返回,不再继续查找还有多少个。

可以直接在业务代码中判断是否非空!

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

SQL查找是否“存在”,不再使用count

总结

COUNT() 有两个截然不同的目的:

它可以统计某一列中的值的数量或行的数量。统计列值时,要求列值非空(NULL不统计)。

如果在COUNT() 的括号中指定列或列表达式,则计数是该表达式具有值的结果数。COUNT()的另一个功能是统计结果集中的行数。当MySQL确认括号内的表达式值不能为空时,实际上是在统计行数。

最简单的事情是当我们使用COUNT(*) 时。在这种情况下,通配符* 不会像我们猜测的那样扩展到所有列。事实上,它会忽略所有列并直接计算所有行。

SQL查找是否“存在”,不再使用count

—— 《高性能MySQL》

无论如何,我们判断它是否存在。只要确定,是和否,不是,否或有多少!是的情况下直接返回,不再继续统计行数!

用户评论

SQL查找是否“存在”,不再使用count
枫无痕

这篇文章真是太有启发性了!我一直都是用COUNT语句来判断是否存在数据,没想到还有更简洁高效的方法。 感谢分享,我明天就试试看这个新方法!

    有9位网友表示赞同!

SQL查找是否“存在”,不再使用count
在哪跌倒こ就在哪躺下

作者说得对啊,有时候 COUNT()确实显得有点累赘,尤其是在简单的查询结果中。这个新的方法看起来简单易懂。不过,还是要根据具体情况选择合适的方法吧。

    有8位网友表示赞同!

SQL查找是否“存在”,不再使用count
疲倦了

以前我也就用count这种方式判断存在的,没想到还有更好的办法效率更高了!学习到了

    有8位网友表示赞同!

SQL查找是否“存在”,不再使用count
顶个蘑菇闯天下i

这确实是个很实用的技巧!对于像我经常写复杂SQL语句的人来说,这个方法可以很大程度上减少代码冗余,提高代码的可读性。

    有17位网友表示赞同!

SQL查找是否“存在”,不再使用count
剑已封鞘

我觉得这种新方法虽然简单,但并不能解决所有问题。如果需要统计某一条件下记录的个数,还是需要使用COUNT()函数吧

    有13位网友表示赞同!

SQL查找是否“存在”,不再使用count
颓废i

这篇文章说的好像很厉害的样子,但我其实不太懂这个语法…还是老老实实用 COUNT 吧!

    有5位网友表示赞同!

SQL查找是否“存在”,不再使用count
浅嫣婉语

这种方法可以用在查询很多种多样情况吗?感觉有点局限性啊…

    有7位网友表示赞同!

SQL查找是否“存在”,不再使用count
冷嘲热讽i

我更喜欢原来的COUNT()函数,这样一看清了结果。这个新方法太抽象了,不好理解

    有13位网友表示赞同!

SQL查找是否“存在”,不再使用count
呆檬

这篇文章让我开阔了眼界!原来还可以用这种方法判断是否存在记录,真是没想到呢!我要赶紧试试看!

    有6位网友表示赞同!

SQL查找是否“存在”,不再使用count
暮染轻纱

这种方法确实简单明了,我以后遇到类似问题就不用纠结COUNT()了! 太棒了!

    有17位网友表示赞同!

SQL查找是否“存在”,不再使用count
夏以乔木

这个做法虽然不错,但是如果复杂查询的话效率会不会变差?

    有7位网友表示赞同!

SQL查找是否“存在”,不再使用count
伱德柔情是我的痛。

我在实际项目中也经常会遇到判断记录是否存在的问题,这个新方法确实可以简化代码。以后我会优先考虑这种方法。

    有14位网友表示赞同!

SQL查找是否“存在”,不再使用count
〆mè村姑

这篇文章太有实用价值了!分享一下我的经验,在查询存在条件的情况下,可以用 IN 函数来代替exists()语句,效果一样好!

    有9位网友表示赞同!

SQL查找是否“存在”,不再使用count
忘故

对于初学者来说,这个方法理解起来可能比较困难吧… 可以多加一些例子说明?

    有6位网友表示赞同!

SQL查找是否“存在”,不再使用count
窒息

真是个强悍的技术!我以前还一直想着用复杂的方法解决这个问题呢。 以后就只用这招, 简洁高效!

    有17位网友表示赞同!

SQL查找是否“存在”,不再使用count
ゞ香草可樂ゞ草莓布丁

我觉得这种方法的适用范围有限,在有些情况下仍然需要使用 COUNT() 函数来进行更加精准的统计。作者应该多加一些解释和说明才能更全面地说明新方法的使用场景。

    有20位网友表示赞同!

SQL查找是否“存在”,不再使用count
志平

这个方法虽然简单,但要注意一些边界条件,例如当表为空时,是否可以有效地判断? 作者应该在文章中补充一些详细的说明

    有14位网友表示赞同!

SQL查找是否“存在”,不再使用count
她最好i

这篇文章确实很有意思,让我了解到新的SQL查询技巧。 以后我会尝试用这个方法来简化我的代码! 感谢分享!

    有9位网友表示赞同!

SQL查找是否“存在”,不再使用count
看我发功喷飞你

我觉得作者把这个新方法描述得比较浅显,对于一些熟悉SQL的人来说,可能对学习价值不高。需要更深入地讲解使用方法和优势才能引起更多人的共鸣

    有8位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/120462.html

(0)
小su's avatar小su
上一篇 2024年9月1日 下午1:08
下一篇 2024年9月1日 下午1:11

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注