auto_review
column type is 라는 데이터베이스 열 이 boolean
있습니다. ActiveRecord ORM을 사용하여 작성된 해당 필드에 대한 색인이 있습니다.
CREATE INDEX index_table_on_auto_renew ON table USING btree (auto_renew);
부울 값을 필드에 쿼리하면 PG가 예상대로 색인을 사용합니다.
EXPLAIN for: SELECT "table".* FROM "table" WHERE "table"."auto_renew" = 'f'
QUERY PLAN
----------------------------------------------------------------------------------------------
Bitmap Heap Scan on table (cost=51.65..826.50 rows=28039 width=186)
Filter: (NOT auto_renew)
-> Bitmap Index Scan on index_domains_on_auto_renew (cost=0.00..44.64 rows=2185 width=0)
Index Cond: (auto_renew = false)
(4 rows)
값 인 경우 NULL
, 순차 주사가 사용된다.
EXPLAIN for: SELECT "table".* FROM "table" WHERE "table"."auto_renew" IS NULL
QUERY PLAN
----------------------------------------------------------------
Seq Scan on table (cost=0.00..1094.01 rows=25854 width=186)
Filter: (auto_renew IS NULL)
(2 rows)
이 선택의 이유를 알고 싶습니다.