我试图通过执行以下命令来清理MySQL中的7.5GiB表:
DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);
这两个字段之间没有外键。由于(第二个?两个?)表的大小,尝试执行此操作会导致以下错误:
多语句交易需要超过' max_binlog_cache_size' 存储字节;增加这个mysqld变量并再试一次
该表非常庞大,我无法提升binlog_cache_size来满足此请求。如果没有将两个表转储到磁盘并使解析器脱机来扩展其内容,是否有某种方法可以重构查询以更有效地执行我需要做的事情?
我可以做的一些事情(但我希望选择正确/明智的选项):
欢迎提出建议!
答案 0 :(得分:1)
试试这个:
DELETE wcm
FROM wp_commentmeta wcm
LEFT JOIN wp_comments wc ON wc.comment_id = wcm.comment_id
WHERE wc.comment_id IS NULL;