MySQL查询优化器有不同的策略来评估子查询:
为在(或=任何)子查询,优化器有这些选择:
在
=任何
Semijoin
物质化
存在策略
存在
为不是在(或< >所有)子查询,优化器有这些选择:
不是在
< >所有
对于派生表,优化器有这些选择(也适用于视图引用):
将派生表合并到外部查询块中
将派生表物化为内部临时表
下面的讨论提供了关于上述优化策略的更多信息。
限制更新而且删除使用子查询修改单个表的语句是,优化器不使用半连接或物化子查询优化。作为一种变通方法,尝试将它们重写为多表更新而且删除使用连接而不是子查询的语句。
更新
删除