假设我在 MySql 数据库中有大约 10000 行,我想计算多个值(总和。中位数,平均值......)。
- 哪个更快,使用简单的 SQL 查询获取所有 10000 并使用 Java 对其进行迭代并进行计算或直接执行 SQL 查询 (select sum(..); select count(*)...) ?是否可以只执行一个返回所需值的查询?
编辑
- 是否有关于该主题的任何指标/统计数据?
- 可以通过连接 2 或 3 个表来获取数据
谢谢
使用MySQL函数比用Java编写代码更好更快。这是因为 MySQL 函数将比 Java 更接近数据。数据库(MySQL)功能也针对此类功能进行了极其优化。
如果您使用 java,那么您将在应用任何逻辑之前先在内存中加载那么多数据。
这取决于
这里的大多数人说它更快,因为它更接近数据等。
然而,这不一定是真的。
例如,如果过滤条件很复杂,如果结果数接近记录总数,如果 DB 机器不是超级快而您的应用程序超级慢,在这种情况下让 DB 做简单的工作(获取所有记录)并在您的应用程序中执行工作可以更快。(我什至没有提到 DB 的可扩展性低,有更多的场景可能导致 DB 中的过滤比应用中慢)
所以,没有经验法则。
我的建议是,将简单直接的过滤/聚合放在 DB 中,让 DB 做它擅长的工作。如果您需要额外的复杂计算来进行过滤,请在应用程序代码中执行(并在 DB 过滤结果上执行)。
MySql 查询会更快,也可以节省大量内存和 CPU 时间。它的一般逻辑。
当然会有例外,但通常最好让数据库引擎进行数据过滤、聚合、排序等。数据库旨在处理这些事情。