如何逐步从不断增长的MySQL表中选择行

时间:2014-03-12 21:46:33

标签: mysql sql

我有一个非常快速增长的MySQL表。我希望有一个持续的过程(例如每30分钟运行一次),它选择自上次运行进程以来所有“新”行。该表有一个名为id的AUTO_INCREMENT列,我想我可以用它来确保我得到所有记录。这是方法:

初始化

LAST_ID_SELECTED = 0

永远反复运行:

startID = 1 + LAST_ID_SELECTED
nextAutoIncrementID = getQuery("SELECT AUTO_INCREMENT FROM information_schema.tables WHERE TABLE_NAME = 'myTable'")
lastID = nextAutoIncrementID - 1
data = SELECT * FROM myTable WHERE id BETWEEN startID AND lastID
LAST_ID_SELECTED = lastID

但是,我认为这实际上不会起作用:我担心我可以获得我的(startID,lastID)范围并在完成ids< = lastID的所有插入之前进行我的选择查询。所以我实际上不会得到范围内的所有行(startID,lastID)。

这样做的正确方法是什么?

0 个答案:

没有答案