Ich habe bemerkt, dass diese Unterabfrage ausgeführtWie kann ich diese Unterabfrage als Join optimieren?
SELECT ST_Area (ST_Union (ST_Transform (ST_Intersection ((SELECT poly1.the_geom von poly1 WHERE poly1.polygon_type = 'P'), poly2.the_geom), 3857)))
AS area_of_P VON poly1, poly2
ist deutlich langsamer als das
beitreten läuftSELECT ST_Area (ST_Union (ST_Transform (ST_Intersection (poly1.the_geom, poly2.the_geom), 3857)))
AS area_of_poly
FROM poly2
LEFT JOIN poly1 auf ST_Intersects (poly1.the_geom , poly2.the_geom)
WHERE poly2.polygon_type = 'P'
Allerdings habe ich auf dieser zweiten jo erweitern müssen ined Version mehr Spalten zurückzukehren, berechnet die jeweils mit dem Bereich eines gegebenen Polygontypen, dh
SELECT ST_Area (ST_Union (ST_Transform (ST_Intersection ((poly1.the_geom von poly1 SELECT WHERE poly1.polygon_type = 'P'), poly2.the_geom), 3857))) AS area_of_P,
ST_Area (ST_Union (ST_Transform (ST_Intersection ((SELECT WHERE poly1.the_geom aus poly1 poly1.polygon_type = 'S'), poly2.the_geom), 3857))) AS Bereich_des_S
VON poly1, poly2
Sorry, sollte ich dies deutlicher gemacht haben. Ich möchte zwei Spalten zurückgeben. Einer ist der Bereich des Polygontyps "P", der andere ist der Bereich des Polygontyps "S". – John
Siehe die aktualisierte Antwort. –
Funktioniert genau so, wie ich es brauche. Danke, Brett. – John