Message posté par : Nicolas Ribot
----------------------------------------
Bonjour,
En terme de performance ou d'utilisation d'index, c'est équivalent de faire
"from table a join table b on st_intersects(....)" ou "from table a, b
where st_intersects(....)
C'est surtout plus logique et plus clair (je trouve) de séparer les conditions de
jointure entre tables (avec des JOIN) de condition de filtres sur des valeurs de colonnes
(where colonne = val).
Dans votre exemple, il n'est pas nécessaire de créer un buffer autour des points si on
veut juste tester la distance entre points et parcelles: c'est lourd de fabriquer des
buffers, et surtout, le faisant dans une CTE, ces buffers ne sont pas indexés et seul
l'index sur les parcelles peut etre utilisé par le planner.
Il faut mieux utiliser la fonction st_dwithin (distance within), qui permet de faire la
requete directement et d'avoir des index disponibles pour la table point et la table
parcelle:
-----------------
Code :
select pt.id, parc.id
from point pt join parcelle parc on st_dwithin(pt.geom, parc.geom, 20);
-----------------
Attention, qd vous faites "limit 5", ca va limiter le résutat aux 5 premiers
points traités, ca ne vas pas donner 5 parcelles par point.
Nicolas
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=355090#p355090
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net