PostGIS查询耗时太长。 > 400ms的

时间:2017-05-11 19:02:21

标签: postgresql postgis query-performance

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))

这花了太长时间。我该如何优化呢。

2 个答案:

答案 0 :(得分:0)

您还没有发布解释计划,但我会假设您没有转化索引,因此数据库必须在每一行上运行ST_Transform。如manual中所述,您需要创建它。

CREATE INDEX indiahighway_ref_geom_2163
  ON indiahighway_ref
  USING gist
  (ST_Transform(geom, 1163))
  WHERE geom IS NOT NULL;

答案 1 :(得分:0)

我解决了这个问题。我没必要让它变得复杂。 ST_DWithin在地理位置上工作得更快,并且更准确,因此我将ST_DWithin与地理位置结合使用,并在地理位置上创建了索引,以使查询运行得更快。