Różnica między SpatialJoin a „… where…” i „join… on…”


9

Zastanawiam się, gdzie jest różnica między tymi dwoma sprzężeniami przestrzennymi i, jeśli istnieje różnica, kiedy ich użyć.

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

i

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

Czy w niektórych sytuacjach jest się szybszym?


1
Różnica jest stylistyczna, ale kiedy twoje zadania rozszerzają się na łączenie od 12 do 15 tabel, zobaczysz, dlaczego doświadczeni koderzy SQL używają JOINwyłącznie. Niestety, jak napisano, jest to bardziej czyste pytanie SQL i opinia na ten temat.
Vince

Odpowiedzi:


4

Nie ma jednej różnicy dla obu stwierdzeń. Postgresql konwertuje oba do tego samego planu zapytań. Możesz zobaczyć plany, dodając je EXPLAIN ANALYZEprzed wyborem i szukając rezultatu.


czy jeden uważa się za szybszy od drugiego?
Stophface

musi być nie. Postgresql konwertuje oba do tego samego planu zapytań. Możesz zobaczyć plany, dodając je EXPLAIN ANALYZEprzed wyborem i szukając rezultatu.
Roman Tkachuk

6
Wolę DOŁĄCZYĆ, ponieważ zbyt łatwo jest zapomnieć o warunku po zmieszaniu GDZIE. Również w metodzie JOIN można użyć LEWEJ, aby na przykład znaleźć punkty, które nie mają żadnego kształtu. Nie możesz tego zrobić z GDZIE
LR1234567
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.