我有一个名为"ITEM_REVIEW"
的表,其列名为"score"
。
[我知道我可以通过以下方式获得score
的平均值:
SELECT AVG(score) FROM "ITEM_REVIEW" WHERE "item_id"=1
即使在记录堆积的情况下,这也是计算平均值的正确(有效)方法吗?还是在NodeJS服务器上获取数据并计算平均值更好?
我将其简化为
SELECT AVG(ir.score) FROM "ITEM_REVIEW" ir
是的,将数据库中的一百万行保存在快速硬盘上,并计算通过网络连接传递的单个浮点数要比通过网络连接将一百万个浮点数传递到共享服务器要高效得多。承担更多责任,并使用一些慢速JavaScript来计算平均值
数据库非常擅长存储,整理,连接和处理数据;这是他们存在的唯一目的/全部原因。精明的团队会花所有的时间来实施和改善数据处理功能的性能,以确保其数据库保持领先地位。将数据尽可能保留在数据库中,并通过慢速网络链接(总是在数据库中汇总和过滤)拖动尽可能少的字节数]
如果您真的很在意,应该尝试一下看看。这样,您就可以针对您的版本,硬件,配置等获得正确的答案。请特别注意内存使用情况,因为NodeJS可能会在将所有数据求平均之前将所有数据存储在内存中。
但是通常,尝试在数据库外部重新实现数据库将会失败。并非总是如此,但总的来说。