自SQL上次查询以来,如何只检索更新/新记录?

时间:2010-12-23 08:40:45

标签: sql mysql tsql query-cache

我被要求设计一个用于缓存SQL查询结果的类。调用类的查询方法将在第一次查询和缓存整个结果集;之后,每个子序列查询将仅检索更新的部分,并将结果合并到缓存中。如果要求类是通用的,即没有关于数据库和表的知识,你有什么想法吗?是否有可能,以及如何仅检索自上次查询以来的更新/新记录?

谢谢! 威廉

2 个答案:

答案 0 :(得分:1)

MySQL(也不是任何其他基于SQL的数据库,据我所知)不会将行的“上次更新时间”或“插入时间”存储在任何地方,至少不能查询任何地方(解析出二进制文件) log可能不是你想要做的事情。)

要获得“新记录”,您需要

  • 查询自动增量值高于上次已知最大值
  • 的所有记录
  • 向表中添加日期时间/时间戳,该表将存储记录的插入/更新时间,并基于该查询进行查询

您可以考虑让代码创建自己的表,每次在另一个表上发生UPDATE或INSERT时都会存储一条记录,然后将触发器添加到填充表的所有其他表中。

但这可能有点多了。

答案 1 :(得分:0)

您的缓存类必须通知所有更新,或者您需要某种过期。

唯一的另一个选择是查询数据库进行检查,但是你有点失去了缓存点:)

以上适用于“通用”缓存。如果为特定表实现专用缓存,则可以使用DML模式。