我正在尝试删除数据库中的孤立帖子并创建了此查询:
DELETE post.*
FROM foro_post AS post
LEFT JOIN foro_thread AS thread USING(threadid)
WHERE thread.threadid IS NULL
Run Code Online (Sandbox Code Playgroud)
问题是我想限制,因为我的表有超过7,000,000条记录.
由于我无法使用LIMIT查询,我尝试了这个并且实际上有效,但我不确定它是否是一个有效的解决方案或者是否可以做得更好.
DELETE post.*
FROM foro_post AS post
LEFT JOIN foro_thread AS thread USING(threadid)
WHERE thread.threadid IS NULL
AND post.postid < 500
// Where < 500 should be increasing as I delete records
Run Code Online (Sandbox Code Playgroud)
我怎样才能更有效地做到这一点?
Zan*_*ien 18
当您同时引用多个表时,不能LIMIT直接在DELETE中使用,但是您可以通过在子选择中包含要删除的内容来解决这个问题:
DELETE po
FROM foro_post po
JOIN (
SELECT p.postid
FROM foro_post p
LEFT JOIN foro_thread t ON p.threadid = t.threadid
WHERE t.threadid IS NULL
ORDER BY p.postid
LIMIT 50
) pp ON po.postid = pp.postid
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9162 次 |
| 最近记录: |