从表中复制数据“滑动窗口”的好策略?

时间:2010-05-27 09:58:56

标签: sql mysql performance database indexing

我有来自第三方应用程序的MySQL表,该表具有数百万行且只有一个索引 - 每个条目的时间戳。现在我想使用除时间戳之外的字段对数据进行一些繁重的自连接和查询。对原始表执行查询会使数据库进行爬网,向表中添加索引不是一个选项。另外,我只需要比一周更新的条目。

我当前有效执行查询的策略是使用具有必要索引的单独表(aux_table)。我的问题是:还有其他方法可以进行查询吗?如果没有,如何有效地更新索引表中的数据?

到目前为止,我找到了两种更新aux_table的方法:

  1. 截断aux_table并从原始表中插入所需数据。效率不高,因为必须重新编写所有索引。
  2. 检查aux_table中的最大时间戳,并插入原始表中具有更大或相等时间戳的所有条目。偶尔会删除较旧的条目。仅复制具有更大时间戳的条目会导致删除条目(因为在上次更新后插入到原始表中的条目具有相同的时间戳)。

1 个答案:

答案 0 :(得分:1)

可能:

为大表添加一个触发器,以自动插入到小表中。

然后,您可以随时将小表修剪到适当的时间范围。