text COLLATE "pg_catalog"."default",
"time_mb" timestamp(6),
На ней висят несколько индексов, интересны нам только эти 2:
CREATE INDEX "table_idx1" ON "public"."table" USING btree (
"user" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"time_mb" "pg_catalog"."timestamp_ops" ASC NULLS LAST
);
CREATE INDEX "table_idx2" ON "public"."table" USING btree (
"user" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
Почему при наличии индекса table_idx1 PG идет читать SeqScan'om?
Если отключаю через enable_seqscan=Off, то идет сначала Bitmap Index Scan по table_idx2, а потом Bitmap Heap Scan по таблице для фильтрации по дате и RecheckCond по user.
Что не так с индексом table_idx1? Выглядит так, будто он дату по индексу не может фильтрануть, но не понятно почему.
А запрос и план можете показать?
Обсуждают сегодня