我需要将特定点与多边形地图相交。 为此,我使用查询顶部的WITH语句定义变量。但是我注意到,如果我对POINT进行“硬编码”,查询将花费400毫秒,并且如果我使用WITH语句进行定义,则运行时间将增加到15秒。
有人可以帮我弄清楚为什么会这样吗?
这需要15秒
WITH
"my_variables" (v_gps) AS
(VALUES ('-9.167162 38.738757'))
SELECT
DISTINCT ON ("11_map_all_shp".map_id)
"11_map_all_shp".map_id,
"11_map_all_shp".geom
FROM
"11_map_all_shp",
"my_variables"
WHERE
ST_Intersects(geom, ST_GeomFromText('POINT(' || v_gps || ')',4326))
ORDER BY
"11_map_all_shp".map_id ASC,
"11_map_all_shp".precedence ASC
这需要400毫秒
SELECT
DISTINCT ON ("11_map_all_shp".map_id)
"11_map_all_shp".map_id,
"11_map_all_shp".geom
FROM
"11_map_all_shp"
WHERE
ST_Intersects(geom, ST_GeomFromText('POINT(-9.167162 38.738757)',4326))
ORDER BY
"11_map_all_shp".map_id ASC,
"11_map_all_shp".precedence ASC