0

有一个包含大约 300-400 条记录的数据库。我可以进行一个简单的查询来获取 30 条记录,例如:

SELECT * FROM table
WHERE isValidated = false
LIMIT 30

关于数据库表内容的更多信息。有一个名为 isValidated 的列,它可以(如您正确猜测的那样)采用以下两个值之一:真或假。查询后,应验证某些记录 (isValidated=true)。每组 30 条记录中大约有 5-6 条记录。相应地,在每次查询之后,我将从之前的查询中获取记录(isValidated=false)。事实上,我永远不会用这种方法走到桌子的尽头。

验证过程是使用 Java + Hibernate 完成的。我是 Hibernate 的新手,所以我使用 Criterion 来进行这个简单的查询。

这种任务有什么最佳实践吗?添加标志字段(标记已获取的记录)的变体是不合适的(此数据库的过度工程)。也许有机会创建一些虚拟表,其中将存储已处理的记录或类似的东西。顺便说一句,在处理完所有记录后,计划再次开始处理它们(有可能,其中一些需要验证)。

提前谢谢你的帮助。

4

1 回答 1

2

我可以想象几种解决方案:

  1. 将所有内容存储在内存中。你只有 400 条记录,考虑到这个小数字,它可能是一个完美的解决方案
  2. 在唯一列(例如,PK)上使用 order by 子句(无论如何都应该这样做),存储最后加载的记录的 ID,并确保下一个查询使用where ID > :lastId
于 2012-05-18T20:28:01.020 回答