Postgresql de>,那么为什么要单独列出这两个字段呢?是否有任何调整参数或其他工作可以迫使pgsql忽略低基数来帮助验证这一理论?@AlexR也许你可以调整某些操作:cpu\u index\u tuple\u cost,random\u page\u cost和seq

Postgresql de>,那么为什么要单独列出这两个字段呢?是否有任何调整参数或其他工作可以迫使pgsql忽略低基数来帮助验证这一理论?@AlexR也许你可以调整某些操作:cpu\u index\u tuple\u cost,random\u page\u cost和seq,postgresql,indexing,database-performance,postgresql-11,Postgresql,Indexing,Database Performance,Postgresql 11,de>,那么为什么要单独列出这两个字段呢?是否有任何调整参数或其他工作可以迫使pgsql忽略低基数来帮助验证这一理论?@AlexR也许你可以调整某些操作:cpu\u index\u tuple\u cost,random\u page\u cost和seq\u page\u cost似乎相关。我过去也做过类似的事情,但我不记得这是否和你的情况完全一样,也不记得它是否有效(提高seq_page_成本确实会降低Postgres进行seq_扫描的可能性)。我不太熟悉PostgreSQL的内部结构,我不


de>,那么为什么要单独列出这两个字段呢?是否有任何调整参数或其他工作可以迫使pgsql忽略低基数来帮助验证这一理论?@AlexR也许你可以调整某些操作:
cpu\u index\u tuple\u cost
random\u page\u cost
seq\u page\u cost
似乎相关。我过去也做过类似的事情,但我不记得这是否和你的情况完全一样,也不记得它是否有效(提高seq_page_成本确实会降低Postgres进行seq_扫描的可能性)。我不太熟悉PostgreSQL的内部结构,我不会考虑10百万行“巨大”;不,只是“大”。但根据我的经验,与部分索引相比,分区并没有明显的效果。
CREATE EXTENSION btree_gin;
create index boundaries2 on rets USING GIN(source, isonlastsync, status, (geoinfo::jsonb->'boundaries'), ctcvalidto, searchablePrice, ctcSortOrder);
create index boundaries on rets USING GIN((geoinfo::jsonb->'boundaries'), source, status, isonlastsync, ctcvalidto, searchablePrice, ctcSortOrder);
explain analyze select id from rets where ((geoinfo::jsonb->'boundaries' ?| array['High School: Torrey Pines']) AND source='SDMLS'
          AND searchablePrice>=800000 AND searchablePrice<=1200000 AND YrBlt>=2000 AND EstSF>=2300
         AND Beds>=3 AND FB>=2 AND ctcSortOrder>'2019-07-05 16:02:54 UTC' AND Status IN ('ACTIVE','BACK ON MARKET')
         AND ctcvalidto='9999-12-31 23:59:59 UTC' AND isonlastsync='true') order by LstDate desc, ctcSortOrder desc LIMIT 3000;
 Limit  (cost=120.06..120.06 rows=1 width=23) (actual time=472.849..472.850 rows=1 loops=1)
   ->  Sort  (cost=120.06..120.06 rows=1 width=23) (actual time=472.847..472.848 rows=1 loops=1)
         Sort Key: lstdate DESC, ctcsortorder DESC
         Sort Method: quicksort  Memory: 25kB
         ->  Bitmap Heap Scan on rets  (cost=116.00..120.05 rows=1 width=23) (actual time=472.748..472.841 rows=1 loops=1)
               Recheck Cond: ((source = 'SDMLS'::text) AND (((geoinfo)::jsonb -> 'boundaries'::text) ?| '{"High School: Torrey Pines"}'::text[]) AND (ctcvalidto = '9999-12-31 23:59:59+00'::timestamp with time zone) AND (searchableprice >= 800000) AND (searchableprice <= 1200000) AND (ctcsortorder > '2019-07-05 16:02:54+00'::timestamp with time zone))
               Rows Removed by Index Recheck: 93
               Filter: (isonlastsync AND (yrblt >= 2000) AND (estsf >= 2300) AND (beds >= 3) AND (fb >= 2) AND (status = ANY ('{ACTIVE,"BACK ON MARKET"}'::text[])))
               Rows Removed by Filter: 10
               Heap Blocks: exact=102
               ->  Bitmap Index Scan on boundaries2  (cost=0.00..116.00 rows=1 width=0) (actual time=471.762..471.762 rows=104 loops=1)
                     Index Cond: ((source = 'SDMLS'::text) AND (((geoinfo)::jsonb -> 'boundaries'::text) ?| '{"High School: Torrey Pines"}'::text[]) AND (ctcvalidto = '9999-12-31 23:59:59+00'::timestamp with time zone) AND (searchableprice >= 800000) AND (searchableprice <= 1200000) AND (ctcsortorder > '2019-07-05 16:02:54+00'::timestamp with time zone))
 Planning Time: 0.333 ms
 Execution Time: 474.311 ms
(14 rows)