Differenza tra SpatialJoin con "... where ..." e "join ... on ..."


9

Mi chiedo dove sia la differenza tra questi due join spaziali e, se c'è una differenza, quando usare quale.

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

e

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

Uno è più veloce in determinate situazioni?


1
La differenza è stilistica, ma quando le attività si espandono fino a unire da dodici a quindici tabelle, vedrai perché i programmatori SQL esperti usano JOINesclusivamente. Sfortunatamente, come scritto, questa è più una pura domanda SQL, e un'esca d' opinione .
Vince il

Risposte:


4

Nessuna differenza per entrambe le affermazioni. Postgresql lo converte nello stesso piano di query. Puoi vedere i piani semplicemente aggiungendo EXPLAIN ANALYZEprima della selezione e cercando il risultato.


uno è considerato più veloce dell'altro?
Stophface,

deve essere no. Postgresql lo converte nello stesso piano di query. Puoi vedere i piani semplicemente aggiungendo EXPLAIN ANALYZEprima della selezione e cercando il risultato.
Roman Tkachuk,

6
Preferisco il JOIN perché è troppo facile dimenticare la condizione se miscelato in WHERE. Inoltre, con l'approccio JOIN, è possibile utilizzare una SINISTRA per trovare, ad esempio, punti che non hanno alcuna forma. Non puoi farlo con WHERE
LR1234567,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.