我试图让Postgis只使用索引扫描,但它执行位图索引扫描到位图堆扫描.
我得到了下表——包含5万行:
CREATE TABLE IF NOT EXISTS public.forme_iris
(
code_iris character varying(20) COLLATE pg_catalog."default" NOT NULL,
geometry geometry,
CONSTRAINT forme_iris_pkey PRIMARY KEY (code_iris)
)
我创建了这个索引:
CREATE INDEX forme_iris_geometry_idx1
ON public.forme_iris USING gist
(geometry, code_iris)
TABLESPACE pg_default;
Postgis告诉我,INCLUDE
语句不能使用合适的覆盖索引,这是不受支持的.
Performed request:
SELECT geometry, code_iris
FROM forme_iris iris
WHERE ST_Intersects(iris.geometry, ST_SetSrid(ST_GeomFromGeoJson('<geojson>'), 4326))
它返回821行,在执行请求之前,我已经清空并分析了表.
PostgreSQL version:x86_64-pc-linux-gnu上的PostgreSQL 11.12,由gcc(gcc)7.3.1 20180712(Red Hat 7.3.1-12)编译,64位
Postgis version:2.5使用_GEOS=1使用_PROJ=1使用_STATS=1
101 output: https://explain.dalibo.com/plan/TJQt
谢谢