最近遇到一個MySQL的性能問題,一個SQL語句,在10000條左右資料中查詢,使用了子查詢方式,結果巨慢(40~50秒),語句類似于如下:
select a.id from t_ne a where a.ip in
(select b.ip from t_ne b group by b.ip having count(b.num) > 1)
轉換為join後快了很多(幾百毫秒):
select a.id from t_ne a join
(select b.ip from t_ne b group by b.ip having count(b.num) > 1) c on a.ip = c.ip
我再換用Oracle測試,明顯沒有這麼大的性能瓶頸,這說明MySQL(5.1.45)的查詢引擎對子查詢的處理有嚴重的性能問題?!