【发布时间】:2020-02-24 11:43:19
【问题描述】:
我必须清点物品。
使用 count 进行选择是否更好,以便 db(postgreSQL) 可以快速执行它或访问 java 中的每个对象并对其进行计数?
在一种方式中,我需要再访问一次数据库,但在另一种方式中,我将循环大量对象。
考虑到应用程序是企业级的,所以我可以拥有数千个对象。
我需要最好的解决方案来优化它。
【问题讨论】:
-
让数据库完成这项工作...大多数已经针对那个工作进行了优化,数据传输也少得多(我知道,这并不总是正确的,但很可能会计数)
-
这取决于.....
-
你在这里的问题太宽泛了。对此没有一般性的答案,只有随着时间的推移进行生产分析才能显示哪个更可取。甚至没有对您的开发进行分析,因为这将有不同的表统计信息、不同的执行计划等等。
-
如果您存储项目的对象/列表/集合没有某种
count或length方法来立即检索它,那么您可能使用了错误的类型对象/列表/集合 - 即您已经应该在内存中拥有该信息。 -
另外,企业级的“千”是相当低的。有的有几千万。如果您不打算将它们用于计数以外的任何用途,那么当您可以拉单个 LONG 时,将它们通过网络拉到您的应用服务器是没有用的。如果您担心两次数据库往返,只需使用多个结果集进行查询,其中一个是 count,另一个是您实际使用的任何结果。
标签: java sql postgresql optimization