• 締切済み

MySQLのサブクエリ

おせわになっております。 MySQLを愛用していますが、気になる疑問にぶつかりましたので、質問させてください。 ★MySQLの4.1系のサブクエリは、性能が悪いのですか? たとえば select * from t1 where key in ( select key from t2 where key2 in ( select key2 from t3 where col = 1)) のようなことをしようとしたとき、ものすごく遅いことがあります。 あきらめて、クエリを分けて、小分けに実行すれば、速いです。 サブクエリなどを高速に実行させる方法などありますでしょうか?MySQL5では違うものなのでしょうか? よろしくお願いします

みんなの回答

  • webuser
  • ベストアンサー率33% (372/1121)
回答No.1

サブクエリという方法に拘りますか? キーがユニークならinner joinとかどうですか? (キーがユニークでなくても、この結果の重複を取れば良いだけですが) select tb1.* from ( tb1 inner join tb2 on tb1.key=tb2.key ) inner join tb3 on tb1.key=tb3.key where tb3.col = 1 ; ちなみに、うちの環境だと複問い合わせがうまくいきませんでした。 何故でしょうか?バージョンが古いからかな? version: 3.23.52-log mysql> select item1 from tb1 where item1 in (select item1 from tb2); ERROR 1064: You have an error in your SQL syntax near 'select item1 from tb2)' at line 1

関連するQ&A