質問: どちらのleft joinが早いでしょうか? 下記2つのテーブルがあったとします。 ・大テーブルa 7000万件 ・小テーブルb 2000件(※現在はwhere句で指定すると1件) をjoinする場合、下記のどちらの方法が望ましいでしょうか? 案1)子テーブルを親とする方法 テーブルa(on句により1件~2000件) left join 7000万件のテーブルb 案2)親テーブルを子とする方法 7000万件のテーブルb left join テーブルa(on句により1件~2000件) 又、left joinの、on句で条件を絞るのと、 where句で条件を絞るのではどちらが好ましいでしょうか?
回答: そもそもleft joinにて外部結合をするのであれば、 テーブルaにテーブルbを結合する場合と、その逆ではまったく 違う作業ですので「どちらがよい」もなにも、 選択肢はどちらか必要に応じてきめるしかありません。 inner joinする場合は、たぶん効率的にはかわらないような気が・・・。 explainで効率をみるとよろしいかと。