#1 Fri 16 September 2016 10:19
- michCarto
- Participant actif
- Date d'inscription: 8 Sep 2009
- Messages: 106
lenteur de st_touches ?
Bonjour,
J'ai l'impression que la fonction st_touch est trés lente , mes 2 tables ont beaucoup de polygone
(je veux calculer la ligne intersecté entre 2 polygones), cela fait 2 jours que la requete tourne
-- patch_deja_existant_naturel_1987_2011 contient 6500 polygones
-- all_occ_sol_1987_b contient 14841 polygones
select a.id_patch_1987,a.geom1987,b.dn as touch_ocsol_1987,st_length(ST_intersection(geom1987,geom),true) as longueur
from w_med_publi2.patch_deja_existant_naturel_1987_2011 a ,
w_med_publi2.all_occ_sol_1987_b
b where (geom1987 && geom) and st_touches(geom1987,geom) ;
- les 2 tables ont un srid 4326 et geom87 et geom sont de type POLYGON
- les index GIST geom1987 et geom ont été créé
que faut t'il faire pour accelerer cette requete
- vaccum analyse ? (mais je crois que je l'ai déja fait ...)
- decomposer cette requete ???
- autre solution .... en abandonnant st_touches ????
merci
Dernière modification par michCarto (Fri 16 September 2016 10:20)
Hors ligne
#2 Fri 16 September 2016 11:22
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: lenteur de st_touches ?
Bonjour,
Pas besoin de faire geom && geom: les functions st_* le font déja.
Peut etre remplacer st_touches par st_intersects et ne garder que les intersections linéaires (comme suggéré dans des mails précédents) entre objets ?
Les polygones sont-ils gros ? (étendus sur la zone, et avec bcp de coordonnées ?) si c'est le cas, il faudrait les découper en plus petits morceaux (st_subDivide)
Que donne le plan de la requete (explain <query...>)
Nicolas
Hors ligne