查询性能差异

时间:2014-01-10 10:22:49

标签: mysql performance caching

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

  3. 这两个陈述与大表中的表现有何不同?在第二个陈述中,是一次又一次地查询内部“选择”还是只查询一次?感谢

1 个答案:

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

没有尝试过,所以请确认两个查询都是等效的。