複合インデックスの使い方

いくつかの列で 1 つのインデックス

書き方

CREATE INDEX 名前 ON 表 (列1, 列2);
CREATE INDEX CONCURRENTLY 名前 ON 表 (列1, 列2, 列3);

インデックスは列の順に並べた目次です。(a, b) は a の順に並び、a が同じ中で b の順です。だから a の条件が無いと使いにくく、a の範囲で探すと b の条件は飛ばし読みになります。等号(=)で探す列を先に、範囲(>=・BETWEEN)や ORDER BY の列を後に置くと、読む行が少なくなり、並べ替え(Sort)も要らなくなります。

例

CREATE INDEX visits_doctor_visited_idx ON visits (doctor_id, visited_at);

実際に打って練習する

障害対応(PostgreSQL)コースの Lv37「並べる順番 複合インデックス」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の障害対応で使う構文一覧へ戻る