我注意到,運行此子查詢如何優化此子查詢作爲連接?
選擇 ST_Area(ST_Union(ST_Transform(ST_Intersection((選擇POLY1 poly1.the_geom WHERE poly1.polygon_type = 'P'),poly2.the_geom),3857) ))
AS area_of_P FROM POLY1,POLY2
比運行此連接顯著慢
SELECT ST_AREA(ST_Union(ST_Transform(ST_Intersection(poly1.the_geom,poly2.the_geom),3857)))
AS area_of_poly
FROM POLY2
LEFT JOIN上st_intersects POLY1(poly1.the_geom ,poly2.the_geom)
WHERE poly2.polygon_type = 'P'
然而,我需要在這個第二裘擴大INED版本返回多個列,每個計算出的給定的多邊形類型的區域,即
SELECT ST_Area(ST_Union(ST_Transform(ST_Intersection((從POLY1 SELECT poly1.the_geom WHERE poly1.polygon_type = 'P' ),poly2.the_geom),3857))) AS area_of_P,
ST_Area(ST_Union(ST_Transform(ST_Intersection((從POLY1 WHERE poly1.polygon_type = 'S'),poly2.the_geom),3857 SELECT poly1.the_geom ))) AS area_of_S
FROM poly1,poly2
對不起,我應該讓這個更清楚。我想返回兩列。一個是多邊形類型'P'的區域,另一個是多邊形類型'S'的區域。 – John
查看已更新的答案。 –
完全按照我需要的那樣工作。謝謝佈雷特。 – John