sql - 内置 SQL 函数的时间复杂度,例如 sum、count、avg

标签 sql mysql sql-server oracle time-complexity

mysql、sql server、oracle 等中的计数、求和、avg 或任何其他内置“数学”函数的时间复杂度是多少?

有人会认为调用 sum(myColumn) 是线性的。

但是 count(1) 不是。实时复杂度是怎么来的?

在一个完美的世界中,我希望总和、平均和计数为 O(1)。但我们并不住在其中之一,对吗?

最佳答案

What is the time complexity of a function such as count, sum, avg or any other of the built in "math"-functions in mysql, sql server, oracle and others?

  • 在带有 MyISAMMySQL 中,没有 GROUP BYCOUNT(*) O(1)(常量)

    它存储在表元数据中。

  • 在所有系统中,MAXMIN 没有GROUP BY 的索引表达式是O(log(n) )(对数)。

    它们是通过一次索引查找获取的。

  • 聚合函数是 O(n)(线性),当不使用 GROUP BYGROUP BY 使用 哈希值

  • GROUP BY 使用 SORT 时,聚合函数是 O(n log(n))

应获取、计算所有值并将其存储在状态变量中(可能存储在哈希表中)。

另外,在使用SORT时,也要对它们进行排序。

关于sql - 内置 SQL 函数的时间复杂度,例如 sum、count、avg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534111/

相关文章:

java - JDBC PL/SQL 上一行 (LAG) 仅返回当前值

mysql - 使用单个查询获取每个多个日期间隔的条目数

mysql - 替换数字之间的字符

c# - 动态生成的 ASP.NET 表,其中包含 Excel 数据

sql - 用单独的列构建 View 列

sql - 如何指定银行帐号的最小和最大数字?

sql - 如何在查询本身内更改 sql 查询的单个列的结果?

php - 访问部分子查询以在 PHP 服务器中构建 HTML

sql - nvarchar(4001)?

sql-server - Sql Server 性能和字段顺序