【发布时间】:2012-11-21 00:16:09
【问题描述】:
我有一个不断增长的大表(目前有 1400 万行并且还在增加)。它是来自日志的“错误”列表。其中一些错误是我想在上游修复时过滤的已知问题。在表中,我有两个位“CheckedForFilter”和“Filtered”,我想在 10,000 个行块中执行以下操作。
1) Select on 10,000 rows (where 'CheckForFilter' is false)
2) Run a series of queries that set the 'Filtered' bit in certain criteria is true
3) After the last query runs set the 'CheckForFilter' bit to true
可以设置“过滤”位的查询列表目前为 5,但我认为随着时间的推移它会增长。我的核心问题是我不知道如何每次都选择相同的行集。我需要将查询保持在可管理的大小,因为运行时间过长的查询会延迟服务器复制。
【问题讨论】:
-
hmm.. 听起来可能有一个正则表达式模式可以进行过滤?如果有多种模式 - 那么您可以将它们存储在另一个表中,然后在游标中动态比较它们。
-
另一种想法 - 对 CheckedForFilter 值中应用的过滤器进行一些按位指示(或将其更改为更多值)以指示已检查哪些过滤器 - 然后你就不会太在意相同的事情了每次运行都精确设置。
标签: mysql