我正在使用包含多达30000条记录的InnoDB表。行更新频率与stock_quantity值。我需要做的是仅选择具有计划任务的最新更新行并通过WebService执行一些操作。在MySQL数据库中仅选择最近更新的行,数据量很大
只是试图了解哪些是最好的方式做到这一点,而不杀人的表现。我想在3个不同的解决方案:使用日期时间列,并更新其在各修改值
- 。然后选择date_col> NOW() - 20分钟的行。 (20分钟是频率crontab正在运行)
- 使用一个布尔列,并在每次修改该行时将该值设置为true。然后选择boolean_col为true的行。如果执行该任务,则将boolean_col的值设置为false。
- 使用第二个表来存储最近更新的列。在table_1中的每一行更新中,将该行复制到table_2。然后选择table_2中的所有行,执行操作并截断table_2。
无论如何,我很确定正确的解决方案没有列在那里...所以有没有人有一些很好的建议?谢谢。
我同意你的使用方法# 1,但我想要指出的是,使datetime列成为一个索引,它现在会随时发生变化,然后会导致索引碎片化。但是,如果索引也按计划进行碎片整理和重建,这应该不是问题.. – Nonym
@ajreal:谢谢你的建议!我已经在考虑'更新current_timestamp',但不是在索引处。那么,除了这3个之外没有更好的方法? – Luciano
@Nonym:也谢谢你! :) – Luciano