所以,我有大约 8M 记录的日志表。由于编程错误,公司在同一日期内发生了超过 1 条记录。现在,我需要从该日志中删除每个公司在同一日期的所有记录,除了最新的(具有最大 ID)。要删除的记录数大约为 300K。
我尝试过的最快和最简单的事情就是这个
delete from indexing_log where id not in (
select max(id)
from indexing_log
group by company_id,
"date"
)
但是这个查询在生产服务器(由于某种原因没有 ssd 驱动器)上花费了大量时间(大约 3 天)。我尝试了所有我知道并需要一些建议的方法。怎么可能更快?
更新我决定通过 celery 任务以桶的方式进行。