データベースのテーブル結合アルゴリズムを調べた
- 入れ子ループ
一行づつ、全てのキーとチェックをかけて同じかチェックするよ
- ソートマージ
2つのテーブルをソートしてからチェックするのでキーの比較回数少ないよ
- セミジョイン
分散DB前提。キーをリモートホストに送信して部分的な結合結果を受け取って、その結果を基に最終的な結合結果を計算するよ。データの転送量減るよ
理解のために簡単にそれっぽい動作をpythonで実装してみた
MySQL、Oracleなどで結合にどんなアルゴリズムを使っているのかは、クエリプランを見るとわかるらしい。
sqlite3は内部結合はwhere句に単純に展開されるらしかった。
http://www.sqlite.org/optoverview.html