Разница между 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)

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


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

Ответы:


4

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


считается ли один быстрее другого?
Stophface

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

6
Я предпочитаю JOIN, потому что слишком легко забыть условие при смешивании в WHERE. Также с подходом JOIN вы можете использовать ВЛЕВО, чтобы, например, найти точки, которые не находятся внутри фигуры. Вы не можете сделать это с помощью WHERE
LR1234567
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.