Я пытаюсь добавить индекс, который является полем типа enum (status), но не может видеть index scan
для этого индекса в запросе объяснения. Не могу понять, о чем я скучаю.
-- t_post_status = ('waiting', 'published', 'deleted')
create index status ON public."Post" USING btree ((status::t_post_status))
Итак, когда я запускаю запросы ниже, я получаю следующий результат:
explain select id from "Post" where status = 'published' limit 1
explain select id from "Post" where status = 'published'::t_post_status limit 1
Limit (cost=0.00..0.20 rows=1 width=4)
-> Seq Scan on "Post" (cost=0.00..5692.64 rows=29192 width=4)
Filter: (status = 'published'::t_post_status)
Но, когда они, я могу видеть index scan
для идентификатора (или другого индекса, когда я изменяю запрос);
explain select id from "Post" where status = 'published' and id = 1 limit 1
explain select id from "Post" where status = 'published'::t_post_status and id = 1 limit 1
Limit (cost=0.29..8.31 rows=1 width=4)
-> Index Scan using "Post_pkey" on "Post" (cost=0.29..8.31 rows=1 width=4)
Index Cond: (id = 1)
Filter: (status = 'published'::t_post_status)