tableの結合
複数テーブルからデータを検索して取得する際に、テーブルを結合した後に検索をする
Aを調べる→Bを調べる→結果をmerge、よりも、AとBをマージ→調べる、の方が速い
クロス結合
CROSS JOIN
内部結合
INNER JOIN
外部結合
マスタとなる主を、左に書くか、右に書くかの違い
マスタ側にのみ存在するkeyがあった場合、そのkeyを削除せず結果に保存する
LEFT JOIN
RIGHT JOIN
OUTER JOIN
自己結合
等値結合/非等値結合
自然結合
NATURAL JOIN
INNER, RIGHT, LEFTの使い分け
Ezekiel (@ezekiel_aleke)
SQL JOINs are like Set Theory:
https://gyazo.com/0864a30be3d5545c496e0574164bb69c
結合時の条件をANDで列挙できる
code:sql
...
JOIN ..
ON ..
AND ..
結合の条件で絞り込む場合は普通にWHERE
code:sql
...
JOIN .. AS a
ON ..
WHERE a.id = 100 ..
複数tableのJOIN
https://sql-oracle.com/sqlserver/?p=1180
結合のためのアルゴリズムは3種類
/mrsekut-book-4774173010/196 (6.2 結合のアルゴリズムとパフォーマンス)
Nested Loop Join (NLJ)
手続き的言語の2重ループのような
https://enterprisezine.jp/article/detail/3520
https://dev.mysql.com/doc/refman/5.6/ja/nested-loop-joins.html
Sort Merge
sortしてから結合する
Hash
わからん
/mrsekut-book-4774173010/052
/mrsekut-book-4774173010/182 (第6章 結合 結合を制する者はSQLを制す)