2014-01-10 94 views
0
  1. select * from table t inner join table_3 t3 on (t3.t_id=t.id) where t3.k_id IN(2,3,5);查询性能差异

  2. 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);

如何这两个语句作为大表的性能有什么不同?在第二个陈述中,内部的“select”是一次又一次查询还是只查询一次?谢谢

+0

应该没有太大的区别。什么解释说? – Bohemian

回答

0

不,这两个查询是完全不同的。将两个查询执行计划与EXPLAIN进行比较,它将为第二个查询显示一个DEPENDENT SUBQUERY选择类型。但是,您可以轻松地将依赖子查询int转换为静态子查询。它会像

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); 

没有试过这个,所以请确认两个查询是否相同。