SQLのJOINには3種類のアルゴリズムあるということを最近知ったのでまとめてみる。 JOINのアルゴリズム Nested Loop Sort/Merge Hash 基本知識 DBMSごとの実装状況 Oracle 3種類全部 MySQL Nested Loopのみ PostgreSQL 3種類全部 外部表(駆動表)と内部表 外部表(駆動表) JOINするときのベースになる表。以下のSQLでいえば、table1 内部表 外部表にくっつける表。以下のSQLでいえば、table2 特徴 Nested Loop Join 外部表にある全行に対して、内部表から結合キー列の値がマッチするものを探して結合する 上記に関連して、外部表にあるレコードが少ないほうがループ数を少なくできるため高速にできる 内部表の結合キー列にインデックスがある場合、インデックスを用いて検索できるため高速に処理できる Sort