gpt4 book ai didi

java - 如何有效地应用数据库中巨大列表的多个位置变化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:33 26 4
gpt4 key购买 nike

我有一个巨大的简单对象的 java 列表,存储在数据库中,通过索引列维护元素的位置。我使用 hibernate 但自己管理列表,因为它太大而无法作为集合存储。

在对列表进行一些更改(添加、删除、移动)后,我想通过手动更新索引列并插入新的分别通过 hibernate 删除元素来将更改保存在数据库中。

现在,(1) 是否有一种有效的算法如何将列表增量组合为尽可能少的 sql 语句 - 或者 (2) 我是否必须记录每个更改并逐步应用它?

最佳答案

您可以尝试为巨大列表的片段维护索引更改。例如,在包含 1000 个项目的列表中,如果您:

  • 在位置 99 和 199 插入新项目,
  • 将项目 2 移动到位置 6,
  • 并删除第 277 项,

您可以使用 HQL 执行以下操作:

  • 删除项目 277
  • 更新项目集索引 = 6,其中索引 = 2
  • 更新项目集索引 = index-1,其中索引在 3 到 6 之间(并且它不是之前的项目 - 注意重叠)
  • 更新项目集索引 = 索引+1 其中索引在 278 和 1000 之间
  • 更新项目集索引 = 索引+2 其中索引在 199 和 276 之间
  • 更新项目集索引 = 索引+1 其中索引在 99 和 198 之间
  • 插入项目 99 和 200

我还没准备好研究算法的细节,只是说你需要维护一个集合段列表和每个段的偏移量。

关于java - 如何有效地应用数据库中巨大列表的多个位置变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com