Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Fri 16 September 2016 10:19

michCarto
Participant actif
Date d'inscription: 8 Sep 2009
Messages: 105

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: 1536

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

 

Pied de page des forums

Powered by FluxBB