Diferencia entre SpatialJoin con "... donde ..." y "unirse ... en ..."


9

Me pregunto dónde está la diferencia entre estas dos uniones espaciales y, si hay una diferencia, cuándo usar cuál.

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

y

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

¿Es uno más rápido en ciertas situaciones?


1
La diferencia es estilística, pero cuando sus tareas se expanden para unir de doce a quince tablas, verá por qué los codificadores SQL experimentados usan JOINexclusivamente. Desafortunadamente, como está escrito, esta es más una pregunta pura de SQL, y un anzuelo de opinión .
Vince

Respuestas:


4

No hay una diferencia para ambas afirmaciones. Postgresql los convierte al mismo plan de consulta. Puede ver los planes simplemente agregando EXPLAIN ANALYZEantes de su selección y busca el resultado.


¿Se considera uno más rápido que el otro?
Stophface

debe ser no. Postgresql los convierte al mismo plan de consulta. Puede ver los planes simplemente agregando EXPLAIN ANALYZEantes de su selección y busca el resultado.
Roman Tkachuk

66
Prefiero el JOIN porque es demasiado fácil olvidar la condición cuando se mezcla DONDE. También con el enfoque JOIN, puede usar una IZQUIERDA para, por ejemplo, encontrar puntos que no tengan ninguna forma. No se puede hacer eso con el DÓNDE
LR1234567
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.