mysql8 IN 和 EXISTS 子查询会自动转化为 join 或者 semi-join ,为什么 IN 查询还需要 EXISTS 策略优化? 除了有聚合 HAVING 这个不能转 join 的确实用 EXISTS 比较好,其他的好像优化器转化后用 show warnings 看 IN 和 EXISTS 语句是一样的。那这篇到底在讲啥? https://dev.mysql.com/doc/refman/8.0/en/subquery-optimization-with-exists.html ,还是说我理解错了。
1
hushulin 55 天前
总结: 这篇文档的重点不是常规的 IN/EXISTS 优化,而是专门讨论:
NULL 值带来的特殊挑战 优化器如何处理这些特殊情况 为什么在这种情况下不能使用常规的 JOIN 优化 如何通过查询改写来避免性能问题 所以你的基本理解是正确的,只是这篇文档聚焦在了一个特定的边界情况( NULL 处理)上。 --- reply by deepseek v3 |
![]() |
3
yh7gdiaYW 55 天前
mysql8 后已经没必要了吧(除了这个 null 的情况),5.7 的时候差别挺大的
|
5
hushulin 55 天前
没有删除按钮,我注明是 AI 回复了
|