Повторно использовать вычисленное значение выбора
Я пытаюсь использоватьST_SnapToGrid а потомGROUP BY
ячейки сетки (х, у). Вот что я сделал первым:
SELECT
COUNT(*) AS n,
ST_X(ST_SnapToGrid(geom, 50)) AS x,
ST_Y(ST_SnapToGrid(geom, 50)) AS y
FROM points
GROUP BY x, y
Я не хочу пересчитыватьST_SnapToGrid
для обоихx
а такжеy
, Поэтому я изменил его, чтобы использовать подзапрос:
SELECT
COUNT(*) AS n,
ST_X(geom) AS x,
ST_Y(geom) AS y
FROM (
SELECT
ST_SnapToGrid(geom, 50) AS geom
FROM points
) AS tmp
GROUP BY x, y
Но когда я бегуEXPLAIN
оба эти запроса имеют одинаковый план выполнения:
GroupAggregate (...)
-> Sort (...)
Sort Key: (st_x(st_snaptogrid(points.geom, 0::double precision))), (st_y(st_snaptogrid(points.geom, 0::double precision)))
-> Seq Scan on points (...)
Вопрос: Будет ли PostgreSQL повторно использовать значение результатаST_SnapToGrid()
?
Если нет, есть ли способ заставить это сделать это?