#1 Mon 09 October 2017 09:53
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Postgis St_Equals index spatial astuce
Bonjour
La fonction st_equals() n'utilise pas toujours les index spatiaux, pour contourner le problème une astuce : ajouter une condition dans la clause WHERE.
Exemple:
Code:
SELECT * FROM a,b WHERE st_equals(a.geom,b.geom)
N'utilise pas l'index gist de la table a
Code:
SELECT * FROM a,b WHERE st_equals(a.geom,b.geom) AND a.geom && b.geom
Utilise l'index spatial
La première requête n'a pas aboutit au bout de 7 minutes, la seconde ne prend que quelques secondes ...
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#2 Mon 09 October 2017 10:52
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: Postgis St_Equals index spatial astuce
Bonjour.
Merci pour l'info.
Je pense qu'il y a le même problème avec le st_intersects.
Sur une requête avec st_intersects, la durée est de 510ms si j'intègre l'opérateur "&&" entre les deux géométries, par contre on est à 32 secondes si je l'enlève.
Cordialement
JP
Hors ligne