gpt4 book ai didi

jquery - 如何优化mysql中带有 'in'子句的select的删除?

转载 作者:行者123 更新时间:2023-11-29 07:45:26 26 4
gpt4 key购买 nike

从包含 100k 记录的表中删除大约 90k 记录:

 delete from table1 where id in ( select id from table2 ) ; 

大约需要 30 分钟,如果我用某种编程语言动态构建相同的内容,它会在不到一分钟的时间内运行。

for i in (records to delete) 
delete from table1 where id = i

如何优化原生mysql查询?

最佳答案

我建议您使用联接操作而不是IN(子查询),并确保table1上有合适的索引(以id作为前导列) :

DELETE t1.*
FROM table1 t1
JOIN table2 t2
ON t2.id = t1.id
<小时/>

编辑

我不确定为什么我的回答遭到否决。如果这是一个糟糕的答案,或者没有帮助,那么我希望有人评论为什么这是一个糟糕的答案。

这个答案比我的大多数答案更简洁;我想我可以解释为什么一个合适的索引对于良好的性能是必要的。

OP 问题是如何“优化删除”,使用 col IN(子查询) 谓词。我认识到我未能解释为什么该模式会导致性能不佳;以及为什么连接操作有时会更有效。 OP问“如何优化 native sql查询”...简短的答案是重写查询。

关于jquery - 如何优化mysql中带有 'in'子句的select的删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27930482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com