在 table 中对 50m 行的操作期间不考虑创建的要点索引
The created gist index is not considered during the operation for 50m rows in a table
我正在尝试根据两个多边形特征的交集编写一个新列,这两个多边形特征在一个 table 中有 50m 行,我已经在 运行 它们之前创建了“要点”索引,但是它需要永远,我无法在 Postgresql 中得到结果。计算中不使用要点索引。如何使用索引进行操作?
模型附在下面fiddle,
CREATE INDEX idx_operation_geom ON public."Operation" USING gist (geom);
CREATE INDEX idx_operation_buffer ON public."Operation" USING gist (buffer);
CREATE INDEX idx_residential_geom ON public."Residential" USING gist (geom);
SELECT
ST_Intersection(ST_MakeValid(r.geom),o.buffer) AS intersection,
ST_Area(ST_Intersection(ST_MakeValid(r.geom),o.buffer))/ST_Area(r.geom)*100
FROM public."Residential" r, public."Operation" o
WHERE ST_Intersects(o.buffer,ST_MakeValid(r.geom));
我尝试使用“解释”检查索引,但我不确定它是如何工作的,
ERROR: operator does not exist: geometry = integer LINE 1: EXPLAIN
SELECT * FROM public."Operation" where buffer = 2;
任何意见都会很有帮助。
索引未被使用,因为您已经索引geom
CREATE INDEX idx_residential_geom ON public."Residential" USING gist (geom);
但是在可以调用索引的函数中,您使用的是ST_MakeValid(geom)
要么在插入几何图形时修复它们,并且可以删除所有其他查询中的 st_makeValid()
语句,要么必须索引 ST_MakeValid()
的输出
CREATE INDEX idx_residential_valid_geom ON public."Residential" USING gist (ST_MakeValid(geom));
我正在尝试根据两个多边形特征的交集编写一个新列,这两个多边形特征在一个 table 中有 50m 行,我已经在 运行 它们之前创建了“要点”索引,但是它需要永远,我无法在 Postgresql 中得到结果。计算中不使用要点索引。如何使用索引进行操作?
模型附在下面fiddle,
CREATE INDEX idx_operation_geom ON public."Operation" USING gist (geom);
CREATE INDEX idx_operation_buffer ON public."Operation" USING gist (buffer);
CREATE INDEX idx_residential_geom ON public."Residential" USING gist (geom);
SELECT
ST_Intersection(ST_MakeValid(r.geom),o.buffer) AS intersection,
ST_Area(ST_Intersection(ST_MakeValid(r.geom),o.buffer))/ST_Area(r.geom)*100
FROM public."Residential" r, public."Operation" o
WHERE ST_Intersects(o.buffer,ST_MakeValid(r.geom));
我尝试使用“解释”检查索引,但我不确定它是如何工作的,
ERROR: operator does not exist: geometry = integer LINE 1: EXPLAIN SELECT * FROM public."Operation" where buffer = 2;
任何意见都会很有帮助。
索引未被使用,因为您已经索引geom
CREATE INDEX idx_residential_geom ON public."Residential" USING gist (geom);
但是在可以调用索引的函数中,您使用的是ST_MakeValid(geom)
要么在插入几何图形时修复它们,并且可以删除所有其他查询中的 st_makeValid()
语句,要么必须索引 ST_MakeValid()
CREATE INDEX idx_residential_valid_geom ON public."Residential" USING gist (ST_MakeValid(geom));