oracle中count1和count*的区别

oracle 中 count(1) 和 count(*) 的区别在于:count(1) 忽略空值,仅计算非空行;count(*) 计算所有行,包括空值;选择哪个函数取决于:是否存在空值、追求性能或一致性的优先级。Oracle 中 COUNT

oracle 中 count(1) 和 count(*) 的区别在于:count(1) 忽略空值,仅计算非空行;count(*) 计算所有行,包括空值;选择哪个函数取决于:是否存在空值、追求性能或一致性的优先级。

oracle中count1和count*的区别

Oracle 中 COUNT(1) 和 COUNT(*) 的区别

在 Oracle 中,COUNT(1) 和 COUNT(*) 都是用于计算表中记录数量的聚合函数,但二者之间存在着细微的区别。

COUNT(1)

  • 仅计算非空值的行。
  • 当表中存在空值时,它可以防止错误计数。
  • 因为它忽略了空值,所以执行速度比 COUNT(*) 略快。

COUNT(*)

  • 计算所有行,包括带空值的。
  • 即使表中有空值,它也会返回准确的计数。
  • 由于它包括了空值,所以执行速度可能比 COUNT(1) 稍慢。

选择使用哪一个?

选择 COUNT(1) 还是 COUNT(*) 取决于以下因素:

  • 是否存在空值:如果表中可能存在空值,使用 COUNT(1) 以避免错误计数。
  • 性能:如果速度至关重要,并且您确定表中没有空值,可以使用 COUNT(1)。
  • 一致性:如果您希望跨所有行进行一致的计数,包括空值,则应使用 COUNT(*)。

示例

假设有一个名为 students 的表,其中包含以下数据:

<code>| id | name | age |
|---|---|---|
| 1 | John | 20 |
| 2 | NULL | 25 |
| 3 | Mary | 22 |</code>

登录后复制

如果使用 COUNT(1) 查询此表,它将返回以下结果:

<code>SELECT COUNT(1) FROM students;
2</code>

登录后复制

这是因为 COUNT(1) 忽略了 NULL 值。

如果使用 COUNT(*) 查询此表,它将返回以下结果:

<code>SELECT COUNT(*) FROM students;
3</code>

登录后复制

这是因为 COUNT(*) 包含了 NULL 值。

以上就是oracle中count1和count*的区别的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:老板不要肥肉,转转请注明出处:https://www.dingdanghao.com/article/424734.html

(0)
上一篇 2024-04-30 06:08
下一篇 2024-04-30 06:42

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号