2014-01-10 133 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); 

沒有試過這個,所以請確認兩個查詢是否相同。