我有一个来自第三方应用程序的 MySQL 表,该表有数百万行并且只有一个索引 - 每个条目的时间戳。现在我想使用时间戳以外的字段对数据进行一些繁重的自连接和查询。对原始表进行查询会使数据库爬行,向表添加索引不是一种选择。此外,我只需要一周以上的条目。
我目前有效执行查询的策略是使用具有必要索引的单独表 (aux_table)。我的问题是:是否有其他方法进行查询?如果没有,如何有效地更新索引表中的数据?
到目前为止,我发现了两种更新 aux_table 的方法:
- 截断 aux_table 并从原始表中插入所需的数据。效率不高,因为必须重新创建所有索引。
- 检查 aux_table 中的最大时间戳,并插入原始表中具有大于或等于时间戳的所有条目。偶尔会删除较旧的条目。仅复制具有更大时间戳的条目会导致删除条目(因为具有相同时间戳的条目在上次更新后插入到原始表中)。
最佳答案
可能:
向大表添加触发器以自动也插入到小表中。
然后您可以随时将小表调整到适当的时间范围。
关于sql - 从表中复制 "sliding window"数据的好策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2920080/