Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-散列整个查询集_Mysql_Hash - Fatal编程技术网

MySQL-散列整个查询集

MySQL-散列整个查询集,mysql,hash,Mysql,Hash,假设我有一个查询运行了15分钟。 我只需要知道自上次提取后,结果数据是否已被修改。 因此,我想从结果中得到一个哈希值,以便能够进行比较。 我知道如何散列单个记录,但我不知道如何对多个记录进行散列 散列整个查询集是最佳做法吗 我怎么做 与其比较哈希,为什么不智能地使用时间戳呢?表中的每条记录都可以有一个created_at和updated_at属性。在插入新记录时设置created_at。更新的\u at在更新记录时更新 每次获取数据时,您都将当前时间戳注册为,例如TS。要查看是否有任何新记录可

假设我有一个查询运行了15分钟。
我只需要知道自上次提取后,结果数据是否已被修改。
因此,我想从结果中得到一个哈希值,以便能够进行比较。
我知道如何散列单个记录,但我不知道如何对多个记录进行散列

  • 散列整个查询集是最佳做法吗
  • 我怎么做

与其比较哈希,为什么不智能地使用时间戳呢?表中的每条记录都可以有一个created_at和updated_at属性。在插入新记录时设置created_at。更新的\u at在更新记录时更新

每次获取数据时,您都将当前时间戳注册为,例如TS。要查看是否有任何新记录可用于下一次获取,请运行:

select count(*) from table where created_at>TS or updated_at>TS

计数操作相对便宜。

触发器似乎是最接近的解决方案

您可以添加其他表来跟踪MySQL的
触发器
s的更改。我考虑过这一点,但如果删除了一行,该怎么办?@Glide-在某个地方保持行计数?如果删除一行并添加一行,您将拥有相同的行数另外,嗯,没错。保留行数和最高ID?如果查询的范围不是最新行的一部分,则最新ID不会告诉您该范围中是否有已删除的行。