【问题标题】:Getting records for comparing: one by one or in one go?获取记录进行比较:一项一项或一次?
【发布时间】:2023-04-03 21:27:01
【问题描述】:

我有一个产品列表,我必须将列表中的每个产品与数据库中存在的原始产品进行比较。这将是正确的方式?

  • 从db中获取所有记录(保存在arraylist中),比较每一个,更新

  • 从 db 中获取一个,比较它,更新,获取下一个

db 模式中有很多连接,因此第二种方式似乎不合适。另一方面,产品表包含超过 5000 条记录,我对将所有记录(可以通过某些查询减少到约 500 条)在内存中存有疑问。

【问题讨论】:

    标签: sql database hibernate data-access-layer dao


    【解决方案1】:

    最好的方法是介于两个选项之间:

    在一次查询中获取从数据库返回的所有行,但在读取每一行时对其进行处理,以便一次只有一个产品在内存中。

    这种方法是完全可扩展的。

    【讨论】:

    • 这个怎么获得?你的意思是复制对象将被处理到内存并在修改完成后在数据库上更新?
    • 使用数据库游标并滚动浏览您的结果行,做任何您需要做的事情(更新等)并在移动到下一行之前完全完成该行
    【解决方案2】:

    就数据库而言,5000 个结果是微不足道的。我会提取所有记录并在内存中对它们采取行动。这在数据库和应用服务器上都会轻得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2013-01-03
      相关资源
      最近更新 更多