【PostgreSQL】式インデックスで関数を使った検索を高速化する関数を使った検索はインデックスが効かない email列にインデックスがあっても、lower(email)のように関数を適用した式で検索すると、そのインデックスは使われない。
CREATE INDEX idx_users_email ON users (email); EXPLAIN SELECT * FROM users WHERE lower(email) = 'user500@example.com'; Seq Scan on users (cost=0.00..2235.00 rows=500 width=25) Filter: (lower(email) = 'user500@example.com'::text) email列のインデックスはemailそのものの値に対して構築されているため、lower(email)という別の値には使えずSeq Scanになる。