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的优化通常被重写为用于表连接的派生表。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐