mysql - 仅选择数据量较大的 MySQL 数据库中最近更新的行

标签 mysql database

我正在使用最多包含 30000 条记录的 InnoDB 表。使用 stock_quantity 值频繁更新行。我需要做的是仅选择带有计划任务的最近更新的行,并通过 WebService 执行一些操作。

只是想了解哪种方法是在不破坏性能的情况下执行此操作的最佳方法。我正在考虑 3 种不同的解决方案:

  1. 使用日期时间列并在每次修改时更新其值。然后选择 date_col > NOW()-20 分钟的行。 (20 分钟是 crontab 运行的频率)
  2. 使用 bool 列并在每次修改行时将值设置为 true。然后选择 boolean_col 为 true 的行。如果任务被执行,则将 boolean_col 的值设置回 false。
  3. 使用第二个表来存储最近更新的列。每次更新 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/

相关文章:

php - 如何在 MySQL 中获取 future 日期的数据

MySQL 'Update Timestamp' 列 - 触发器

mysql - 删除时设置 null 更新级联 MySQL

mysql - 为什么 mysql INSERT ... ON DUPLICATE KEY UPDATE 会破坏主/主配置上的 RBR 复制

php - 如何将json数据保存到mysql?

php - mysql - 如何向列添加计数器?

php - 为用户输入的文本字符串创建 MySQL 表

php - 准备好的语句导致 while 循环错误

database - 为什么 Oracle 使用 DBMS_STATS.GATHER_TABLE_STATS?

python - 如何解析纯文本表格? (多行)