我有一张包含很多(> 20.000)记录的表格.现在是时候清理那些因为查询开始占用大量资源了.我有另一个(临时)表与最近的记录.第一个表中第二个中不存在的所有记录都可以.但是,由于一些连接,我需要保留最近记录的id,所以我不能只是TRUNCATE然后复制表.你有什么办法吗?
Ale*_*rMP 14
DELETE FROM old_table WHERE id NOT IN (SELECT id FROM temp_table)
Run Code Online (Sandbox Code Playgroud)
编辑:
id NOT IN (SELECT id FROM temp_table)是一个糟糕的建筑.如果您有大型表并且服务器设置被调整为低内存,则将永久执行此操作.
@Piskvor的答案是一个更长的,但更好的查询,在低内存设置上最有效.当我说"低内存"时,我指的是不占用完整高端计算机的数据库服务器,所以几乎任何管理小型企业网站的系统或类似的东西.