Différence entre SpatialJoin avec «… où…» et «rejoindre… le…»


9

Je me demande où est la différence entre ces deux jointures spatiales et, s'il y a une différence, quand les utiliser.

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

et

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

Est-on plus rapide dans certaines situations?


1
La différence est stylistique, mais lorsque vos tâches s'élargiront pour rejoindre douze à quinze tables, vous comprendrez pourquoi les codeurs SQL expérimentés utilisent JOINexclusivement. Malheureusement, tel qu'il est écrit, il s'agit davantage d'une question SQL pure, et d'un appât d' opinion à cela.
Vince

Réponses:


4

Aucune différence pour les deux déclarations. Postgresql le convertit dans le même plan de requête. Vous pouvez voir les plans en ajoutant simplement EXPLAIN ANALYZEavant votre sélection et recherche le résultat.


l'un est-il considéré plus rapide que l'autre?
Stophface

doit être non. Postgresql le convertit dans le même plan de requête. Vous pouvez voir les plans en ajoutant juste EXPLAIN ANALYZEavant votre sélection et recherche le résultat.
Roman Tkachuk

6
Je préfère le JOIN car il est trop facile d'oublier la condition lorsqu'il est mélangé O in. Toujours avec l'approche JOIN, vous pouvez utiliser un LEFT pour trouver par exemple des points qui ne se trouvent dans aucune forme. Vous ne pouvez pas faire cela avec le WHERE
LR1234567
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.