PostGIS 查询耗时过长。 >400毫秒
PostGIS query taking too long. >400ms
Select COUNT(*) from indiahighway_ref where (ST_DWithin(ST_Transform(indiahighway_ref.geom,2163),ST_Transform(ST_GeomFromText('POINT(73.919595 18.5622609)', 4326),2163),500))
时间太长了。我该如何优化它。
您尚未发布解释计划,但我假设您没有转换索引,因此数据库必须在每一行上 运行 ST_Transform
。如 manual 中所述,您将要创建它。
CREATE INDEX indiahighway_ref_geom_2163
ON indiahighway_ref
USING gist
(ST_Transform(geom, 1163))
WHERE geom IS NOT NULL;
我解决了这个问题。我没有必要让它变得复杂。 ST_DWithin 对地理的处理速度更快并且更准确,因此我对地理使用 ST_DWithin 并创建了地理索引以使查询 运行 更快。
Select COUNT(*) from indiahighway_ref where (ST_DWithin(ST_Transform(indiahighway_ref.geom,2163),ST_Transform(ST_GeomFromText('POINT(73.919595 18.5622609)', 4326),2163),500))
时间太长了。我该如何优化它。
您尚未发布解释计划,但我假设您没有转换索引,因此数据库必须在每一行上 运行 ST_Transform
。如 manual 中所述,您将要创建它。
CREATE INDEX indiahighway_ref_geom_2163
ON indiahighway_ref
USING gist
(ST_Transform(geom, 1163))
WHERE geom IS NOT NULL;
我解决了这个问题。我没有必要让它变得复杂。 ST_DWithin 对地理的处理速度更快并且更准确,因此我对地理使用 ST_DWithin 并创建了地理索引以使查询 运行 更快。