select * from table t inner join table_3 t3 on (t3.t_id=t.id) where t3.k_id IN(2,3,5);
select * from table t inner join table_3 t3 on (t3.t_id=t.id) where t3.k_id IN(select id from table_2);
这两个陈述与大表中的表现有何不同?在第二个陈述中,是一次又一次地查询内部“选择”还是只查询一次?感谢
答案 0 :(得分:0)
不,这两个问题完全不同。将两个查询执行计划与EXPLAIN进行比较,它将为第二个查询显示DEPENDENT SUBQUERY
选择类型。但是,您可以optimize your query轻松地将从属子查询转换为静态子查询。它会像
select *
from table t
inner join table_3 t3 on (t3.t_id=t.id)
where exists (select 1 from table2 where t3.k_id = table2.id);
没有尝试过,所以请确认两个查询都是等效的。