MySQL子查询和join连接哪个性能更好

我们首先使用EXPLAIN解释一下子查询

当使用EXPLAIN解析以下SQL的时候,MySQL报告了一个警告

EXPLAIN
SELECT t.* FROM test t WHERE t.id IN (SELECT t2.id FROM test t2 )

显示警告发现子查询被编译为join语句

SHOW WARNINGS
select `test`.`t`.`id` AS `id`,`test`.`t`.`name` AS `name` 
from `test`.`test` `t2` join `test`.`test` `t` 
where (`test`.`t`.`id` = `test`.`t2`.`id`)

MySQL子查询和join连接哪个性能更好_第1张图片

子查询被编译器优化成了join语句,也就是说join比子查询更好

你可能感兴趣的:(MySQL数据库,mysql,sql)