Разница между SpatialJoin с «… где…» и «присоединиться… на…»

9

Интересно, где разница между этими двумя пространственными объединениями и, если есть разница, когда использовать какой.

SELECT *
FROM points p, shapes s
WHERE ST_Within(p.geom, s.geom);

а также

SELECT *
FROM points p
INNER JOIN shapes s ON ST_Within(p.geom, s.geom)

Один быстрее в определенных ситуациях?

Stophface
источник
1
Различие стилистическое, но когда ваши задачи расширятся до объединения двенадцати-пятнадцати таблиц, вы поймете, почему опытные кодеры SQL используют JOINисключительно. К сожалению, как написано, это скорее вопрос чистого SQL, и приманка мнения при этом.
Винс

Ответы:

4

Нет одного различия для обоих утверждений. Postgresql преобразует их в один и тот же план запроса. Вы можете увидеть планы, просто добавив EXPLAIN ANALYZEперед вашим выбором и ищет результат.

Роман Ткачук
источник
считается ли один быстрее другого?
Stophface
должно быть нет. Postgresql преобразует их в один и тот же план запроса. Вы можете увидеть планы, просто добавив EXPLAIN ANALYZEперед вашим выбором и ищет результат.
Роман Ткачук
6
Я предпочитаю JOIN, потому что слишком легко забыть условие при смешивании в WHERE. Также с подходом JOIN вы можете использовать ВЛЕВО, чтобы, например, найти точки, которые не находятся внутри фигуры. Вы не можете сделать это с помощью WHERE
LR1234567