ST_Contains数据查询速度太慢,解决方案
select zci.*,caf.area_id
from tablexxx1 zci
left join tablexxx2 caf
on ST_Contains(ST_GeomFromText(caf.coordinates),st_point(zci."GIS经度" ,zci."GIS纬度"))
通过以上查询语句,查询超时。
数据量是1.7W左连接180W,用到的表我直接用pandas导入postgre数据库的,所以没有设置索引,这是速度慢的原因之一。 同时关联条件是函数嵌套函数,这样速度也会慢。
解决方式1,生成新的字段geom,把关联条件拆开。
对新字段更新:
update tablexxx set geom = st_point ( "GIS经度", "GIS纬度" ) where geom is null ;
解决方式2:对geom设置索引
geom类型为geometry,选用GiST索引,其他形式可以选使用B+Tree索引