式インデックスの使い方

関数や式の結果で引く

書き方

CREATE INDEX 名前 ON 表 ((式));
CREATE INDEX 名前 ON 表 (lower(列));

WHERE lower(email) = … のように列に関数をかけると、列のインデックスは使えません。式の結果を目次にした式インデックスなら使えます。問い合わせには、インデックスと同じ形の式を書きます(lower(trim(email)) と lower(email) は別の式)。関数でない式は ((列::date)) のように括弧を 2 重にします。使えるのは IMMUTABLE(同じ入力なら必ず同じ結果)の関数だけです。

例

CREATE INDEX patients_lower_email_idx ON patients (lower(email));

実際に打って練習する

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

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

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