我在服务器上有一张带有 fields 的表docid (bigint(20))
,msgtext (longtext)
以及我不关心的其他表。
我想要做的是在msgtext
(它使用一些正则表达式来清理msgtext
)上运行一个函数,然后将结果添加回新创建的列中的数据库中cleanMsgtext
。我的目标是优化这一点,并在理想情况下最大限度地减少我自己在此过程中的内存需求。
为了最大限度地减少内存需求,最简单的方法是一次执行此步骤。即我会拉下一行,运行函数,然后推回结果。当然,这有点极端,所以对我来说更有意义的是一次拉下行,例如 10,000 行以最小化选择查询。我想做的是尽量减少更新查询。即我的选择查询类似于
select docid, msgtext
from db
where docid='1' or docid='2' or ... or docid='10000'
我可以通过提前拉下 docid 或其他方式轻松地以编程方式完成(尽管这可能也是愚蠢的?)。仅此一项就导致了我很满意的巨大加速。
我想知道是否有一种等效的方法来更新表格。我可以以类似的方式连接更新消息以从多个查询中创建一个查询吗?如果您每次都拉下整行,我已经阅读了一些可能的内容,但对我来说,docid 是一个唯一标识符,因此似乎没有必要。
所以总而言之,我想选择大小为 N 的批次,在本地处理数据,然后再以大小为 N 的批次进行更新。这可能吗?