ソートマージ・ジョイン?

性能上問題がある、ということでSQLの見直しを指示された。
いわく、ソートマージ・ジョインが発生している
いわく、テーブルスキャンが発生している

なんで今更SQLの見直しをしなくてはならない?テストやり直すの?SQLの変更だけじゃすまなくてプログラム変更が発生するかもよ。
と、ちょっといやいやモードで打ち合わせに臨んだのだが、該当のSQLの実行プランや、実際の実行時間・コストなどの資料を元に説明を受けたので「なるほど確かにこれは直さなくてはならないよなあ」と納得した。

とはいえ、じゃあどう直せばいい?
いまいちよくわからない。
今までの職場ではこんなSQLの性能評価なんてやったことがない。遅い?じゃあインデックス付けとけ!って感じ。

雑誌で見かけた記事にこんなのがあったような気がして本棚をあさってみたところ、日経SYSTEMSの「RDBMS きほんのき」という連載だった。
残念ながら「ソートマージ・ジョイン」を解説した号は捨ててしまったようだが、手持ちの分を読んだところによると
SQLの性能はディスク・アクセス回数に大きく左右される
・ディスク・アクセス回数を減らすためには先に読み込むテーブルをどれにするか留意する必要がある
とのこと。
なかなかおもしろい。とりあえず連載の監修者の本を買ってみた。

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine Selection)

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine Selection)