我正在使用最多包含 30000 条记录的 InnoDB 表。使用 stock_quantity 值频繁更新行。我需要做的是仅选择带有计划任务的最近更新的行,并通过 WebService 执行一些操作。
只是想了解哪种方法是在不破坏性能的情况下执行此操作的最佳方法。我正在考虑 3 种不同的解决方案:
- 使用日期时间列并在每次修改时更新其值。然后选择 date_col > NOW()-20 分钟的行。 (20 分钟是 crontab 运行的频率)
- 使用 bool 列并在每次修改行时将值设置为 true。然后选择 boolean_col 为 true 的行。如果任务被执行,则将 boolean_col 的值设置回 false。
- 使用第二个表来存储最近更新的列。每次更新 table_1 中的行时,都会将该行复制到 table_2。然后选择 table_2 中的所有行,执行操作并截断 table_2。
无论如何,我很确定那里没有列出正确的解决方案...所以有人有一些好的建议吗?谢谢。
最佳答案
根本就是拳头,
30,000 条记录并不算大...
我更喜欢方法 1,并进行一些额外的更改
- 将日期时间列默认设置为
更新 current_timestamp
- 建立该列的索引
方法2会产生冗余的写入、读取
方法 3 更糟糕,它几乎双 x 双
写入和读取操作
关于mysql - 仅选择数据量较大的 MySQL 数据库中最近更新的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231394/