2

假设我在 MySql 数据库中有大约 10000 行,我想计算多个值(总和。中位数,平均值......)。

  • 哪个更快,使用简单的 SQL 查询获取所有 10000 并使用 Java 对其进行迭代并进行计算或直接执行 SQL 查询 (select sum(..); select count(*)...) ?是否可以只执行一个返回所需值的查询?

编辑

  • 是否有关于该主题的任何指标/统计数据?
  • 可以通过连接 2 或 3 个表来获取数据

谢谢

4

4 回答 4

4

使用MySQL函数比用Java编写代码更好更快这是因为 MySQL 函数将比 Java 更接近数据。数据库(MySQL)功能也针对此类功能进行了极其优化。

如果您使用 java,那么您将在应用任何逻辑之前先在内存中加载那么多数据。

于 2012-11-15T04:25:49.137 回答
3

这取决于

这里的大多数人说它更快,因为它更接近数据等。

然而,这不一定是真的。

例如,如果过滤条件很复杂,如果结果数接近记录总数,如果 DB 机器不是超级快而您的应用程序超级慢,在这种情况下让 DB 做简单的工作(获取所有记录)并在您的应用程序中执行工作可以更快。(我什至没有提到 DB 的可扩展性低,有更多的场景可能导致 DB 中的过滤比应用中慢)

所以,没有经验法则。

我的建议是,将简单直接的过滤/聚合放在 DB 中,让 DB 做它擅长的工作。如果您需要额外的复杂计算来进行过滤,请在应用程序代码中执行(并在 DB 过滤结果上执行)。

于 2012-11-15T04:34:26.840 回答
1

MySql 查询会更快,也可以节省大量内存和 CPU 时间。它的一般逻辑。

于 2012-11-15T04:27:19.983 回答
0

当然会有例外,但通常最好让数据库引擎进行数据过滤、聚合、排序等。数据库旨在处理这些事情。

于 2012-11-15T04:30:22.420 回答