Diferença entre SpatialJoin com "... where ..." e "join ... on ..."


9

Gostaria de saber onde está a diferença entre essas duas junções espaciais e, se houver alguma diferença, quando usar qual.

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)

Um é mais rápido em determinadas situações?


11
A diferença é estilística, mas quando suas tarefas se expandem para juntar doze a quinze tabelas, você verá por que os codificadores SQL experientes usam JOINexclusivamente. Infelizmente, como está escrito, isso é mais uma questão pura de SQL, e isca de opinião nisso.
Vince

Respostas:


4

Nenhuma diferença para ambas as afirmações. O Postgresql converte ambos no mesmo plano de consulta. Para ver os planos, basta adicionar EXPLAIN ANALYZEantes de selecionar e procurar o resultado.


um é considerado mais rápido que o outro?
Stophface #

deve ser não. O Postgresql converte ambos no mesmo plano de consulta. Para ver os planos, basta adicionar EXPLAIN ANALYZEantes de selecionar e procurar o resultado.
Roman Tkachuk

6
Eu prefiro o JOIN porque é muito fácil esquecer a condição quando misturado em WHERE. Também com a abordagem JOIN, você pode usar a ESQUERDA para, por exemplo, encontrar pontos que não estão em nenhuma forma. Você não pode fazer isso com o WHERE
LR1234567
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.