postgis查询性能低下。怎么改进呢?

时间:2017-10-28 22:23:45

标签: sql postgresql gis postgis

我正在尝试提高查询的性能。从教程我读到,首先运行EXPLAIN (ANALYZE, BUFFERS)是一件好事。经过快速检查和this网站的帮助后,看起来我在内循环方面遇到了一些问题,但我不知道如何改进它。我在geoms上创建了3d索引,在id列上创建了普通索引。通常,此查询返回从每个点到线的最近3d距离:

EXPLAIN (ANALYZE, BUFFERS)
SELECT
    (ST_3DDistance(veg.geom_veg3Dgr, cables.geom) - veg.z_veg_gr) falldist,
    ST_3DDistance(veg.geom_veg3D, cables.geom) dist3d,
    ST_3DClosestPoint(cables.geom, veg.geom_veg3D) closeST_pt,
    ST_Distance(veg.geom_veg2D, cables.geom) dist2d,
FROM (
    SELECT p.ID AS vegId,
    (
        SELECT wire.id
        FROM wire_voltage_temp AS wire
        WHERE ST_Dwithin(p.geom_veg2D, wire.geom, 70)
        ORDER BY ST_3DDistance(wire.geom, p.geom_veg3D) ASC
        LIMIT 1
    ) AS g2
    FROM veg_span_temp AS p
    OFFSET 0
) AS q
JOIN veg_span_temp AS veg
    ON q.vegId = veg.id
JOIN wire_voltage_temp AS cables
    ON q.g2 = cables.id;

0 个答案:

没有答案