Unterschied zwischen SpatialJoin mit "... wo ..." und "Join ... on ..."

9

Ich frage mich, wo der Unterschied zwischen diesen beiden räumlichen Verknüpfungen liegt und wann es welche gibt, wenn es einen Unterschied gibt.

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

und

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

Ist man in bestimmten Situationen schneller?

Stophface
quelle
1
Der Unterschied liegt im Stil, aber wenn sich Ihre Aufgaben auf zwölf bis fünfzehn Tabellen ausweiten, werden Sie sehen, warum erfahrene SQL-Codierer JOINausschließlich diese verwenden. Leider ist dies, wie geschrieben, eher eine reine SQL-Frage und ein Meinungsköder .
Vince

Antworten:

4

Kein Unterschied für beide Aussagen. Postgresql konvertiert beide in denselben Abfrageplan. Sie können Pläne anzeigen, indem Sie sie einfach EXPLAIN ANALYZEvor Ihrer Auswahl hinzufügen und nach dem Ergebnis suchen.

Roman Tkachuk
quelle
wird einer als schneller angesehen als der andere?
Stophface
muss nein sein. Postgresql konvertiert beide in denselben Abfrageplan. Sie können Pläne anzeigen, indem Sie sie einfach EXPLAIN ANALYZEvor Ihrer Auswahl hinzufügen und nach dem Ergebnis suchen.
Roman Tkachuk
6
Ich bevorzuge das JOIN, weil es zu leicht ist, den Zustand zu vergessen, wenn man WO einmischt. Auch mit dem JOIN-Ansatz können Sie mit LEFT beispielsweise Punkte suchen, die sich nicht in einer Form befinden. Sie können das nicht mit dem WHERE
LR1234567