MySQL数据库子查询
发布时间:2023-07-05 10:19:39 所属栏目:MySql教程 来源:
导读:子查询的逻辑非常清晰。虽然 JOIN 也可以满足需求,但这并不容易理解,因为LEFT JOIN是一种代数关系,子查询更倾向于从人类思维的角度来理解。
然而,在MySQL 8.0中,优化器会自动将 in 子查询优化为 JOIN 执行计
然而,在MySQL 8.0中,优化器会自动将 in 子查询优化为 JOIN 执行计
|
子查询的逻辑非常清晰。虽然 JOIN 也可以满足需求,但这并不容易理解,因为LEFT JOIN是一种代数关系,子查询更倾向于从人类思维的角度来理解。 然而,在MySQL 8.0中,优化器会自动将 in 子查询优化为 JOIN 执行计划,这将显著提高性能。 我们只需要关注SQL执行计划,如果两个执行计划相同,则性能没有差异。 在MySQL 8.0之前,MySQL没有完全优化子查询。因此,您将在子查询的执行计划中看到DEPENDENT SUBQUERY的提示,这表明它是一个从属子查询,子查询需要依赖外部表的关联。DEPENDENT SUBQUERY的执行速度可能非常慢,而且大多数时候您需要手动将其转换为两个表之间的连接。 所以这里提示大家,如果你的当前的MySQL 8.0版本可以编写子查询,因为子查询的优化相当完整; 对于 MySQL 8.0 之前版本的MySQL,需要查看所有子查询的 SQL 执行计划。对于 DEPENDENT SUBQUERY 的提示,要进行优化,否则将对业务产生重大性能影响;DEPENDENT SUBQUERY的优化通常被重写为用于表连接的派生表。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
