我有以下查询:
UPDATE DestinTable
SET destin = geomVal
FROM GeomTable
WHERE st_contains(st_transform(geom, 4326), st_setsrid(
st_makepoint(d_lon::double precision, d_lat::double precision), 4326));此查询工作正常,但速度非常慢。我必须在一个非常大的表上运行一个更新,它需要一个8+小时才能完成(我在5个不同的列上运行了这个更新)。--我想知道是否有办法优化这个查询,使它运行得更快。我不知道与st_contains()方法相关的幕后工作,因此可能有一些明显的解决方案我遗漏了。
发布于 2014-03-18 23:52:30
最简单的方法是在ST_TRANSFORM上创建索引
CREATE INDEX idx_geom_4326_geomtable
ON GeomTable
USING gist
(ST_Transform(geom, 26986))
WHERE geom IS NOT NULL;如果表中有一个SRID中的所有字段,那么在该表上创建一个普通的GIST索引并将提供给本地SRID的点转换将更加容易
https://stackoverflow.com/questions/22368462
复制相似问题