こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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では違うものなのでしょうか?

よろしくお願いします

投稿日時 - 2005-11-09 15:49:08

QNo.1767971

暇なときに回答ください

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2005-11-10 20:02:50

あなたにオススメの質問