Різниця між 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
Я вважаю за краще ПРИЄДНАЙТЕСЬ, тому що занадто легко забути стан, коли його змішують у WHERE. Також із підходом JOIN ви можете скористатися лівим, щоб, наприклад, знайти точки, які не знаходяться в будь-якій формі. Ви не можете цього зробити з WHERE
LR1234567
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.