我正在尝试使用以下查询
将纬度/经度与特定邻居位置相匹配create table address_classification as (
select distinct buildingid,street,city,state,neighborhood,borough
from master_data
join
Borough_GEOM
on st_contains(st_astext(geom),coordinates) = 'true'
);
在此,坐标格式低于
ST_GeometryFromText('POINT('||longitude||' '||latitude||')') as coordinates
和geom是列类型几何 我已经创建了如下索引
CREATE INDEX coordinates_gix ON master_data USING GIST (coordinates);
CREATE INDEX boro_geom_indx ON Borough_GEOM USING gist(geom);
主表中有近300万条记录,GEOM表中有200条几何信息。解释分析查询花了这么多时间(2小时)。 请告诉我,如何优化此查询。
提前致谢。
答案 0 :(得分:2)
ST_AsText()
:不属于那里。它将geom转换为文本,然后返回geom。但是,更重要的是,这个过程很可能会弄错指数。DISTINCT ON
,无需比较其他列。EXISTS
。这些列中的任何一列都来自borough_GEOM
以外的geom
吗?我会从这样的事情开始,
CREATE TABLE address_classification AS
SELECT DISTINCT ON (buildingid),
buildingid,
street,
city,
state,
neighborhood,
borough
FROM master_data
JOIN borough_GEOM
ON ST_Contains(geom,coordinates);