【发布时间】:2021-05-25 09:46:02
【问题描述】:
dolphindb中的count(*)和count(column)有区别吗?
他们的表现有何不同?
【问题讨论】:
dolphindb中的count(*)和count(column)有区别吗?
他们的表现有何不同?
【问题讨论】:
虽然这不是重复的,但区别在count(*) versus count(column) in dolphindb中有说明
count(*)将计算 ALL 行,但count(column)将仅计算在指定的列。
在性能方面,count(*)应该表现更好,因为它不需要计算每一行的值,但最终SQLcount()函数表达式会执行rowCount() function,而没有提到对count(*) 的特殊处理,或者甚至支持语法。
在这种情况下,如果您有足够大的表,您应该能够观察到差异并为自己证明这一点。如果您运行两个变体(引用列名版本没有任何空值的唯一列)count(*) 应该更快
就通用SQL而言Count()there is a good explanation here
人们认为,在某些较旧的 SQL 数据库中,如果您指定任意值而不是
*(如Count(1)),则无论是否正确,现代 RDBMS 实现都不会尝试评估所有列不为空,它们会将count(*)评估为特例,表示“计算所有行数。”
1和*之间的这种行为在 DolphinDb 中的相关性较低,因为 SQL 命令语法只是内部rowCount()函数的包装,该函数将接受一个或多个向量、向量元组、矩阵或表格作为参数。
【讨论】: