式インデックスの使い方
関数や式の結果で引く
書き方
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「形を合わせる 式インデックス」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。