我有一个名为的表"ITEM_REVIEW",其中有一列名为"score".
我知道我可以score通过以下方式获得平均值:
SELECT AVG(score) FROM "ITEM_REVIEW" WHERE "item_id"=1
即使记录堆积,这是计算平均值的正确(有效)方法吗?还是在我的 NodeJS 服务器上获取数据并计算平均值更好?
我有一个名为的表"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 可能会在平均数据之前将所有数据存储在内存中。
但总的来说,试图在数据库之外重新实现数据库将会失败。并非总是如此,但总的来说。