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 Sat 16 May 2020 09:41

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

st_dwithin - Problème

Bonjour,

Je dispose d'une table points "PointA" (500 000 points), et d'une seconde table de points "PointB" (73 000 points). Je voudrais faire la somme d'une colonne quantitative située dans "PointB" des points qui se situent à une distance fixe de chacun des points de "PointA". Pour cela, utiliser la clause St_dwithin me paraît être cohérent.

Code:

select pta.id, sum(ptb.ind) somme_pop
from pointa pta, pointb ptb
where st_dwithin(pta.geom, ptb.geom, 10000)
group by pta.id

Malheureusement, la requête dure plus d'une heure pour s'achever (malgré les index spatiaux).
Je me demandais si une syntaxe particulière me permettrait d'aller plus vite...

Merci.

Dernière modification par preliator (Sat 16 May 2020 09:43)

Hors ligne

 

#2 Sat 16 May 2020 12:28

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: st_dwithin - Problème

Bonjour,

Suivant votre dataset et la répartition des points, 10000m (je suppose que vos données sont en mètres) peut etre une distance énorme: chaque PointA peut matcher beaucoup de pointB => l'index ne sert plus vraiment, il n'est plus assez sélectif car le nombre de candidat à retenir couvre une grande partie de l'index.
Au final, le système réalise des millions, voire centaines de millions de tests de distance et c'est long.

Vous pouvez le vérifier en analysant le plan de la requête (explain <requete>; ) et en regardant les couts; ca ne m'étonnerait pas qu'ils soient enormes dans votre ca (pouvez-vous poster le résultat de ce "explain select pta.id..." ?).

Nicolas

Hors ligne

 

#3 Sat 16 May 2020 12:39

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: st_dwithin - Problème

Vous avez lancé vacuum analyse <table> après la création des index ?

Nico

Hors ligne

 

#4 Sat 16 May 2020 12:57

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

Re: st_dwithin - Problème

Merci pour votre réponse. Effectivement, il doit y avoir énormément de points qui match, vu la distance de 10000m.
Non, je n'ai pas lancé ce vacuum. Je n'y ai pas pensé.
Merci beaucoup

Hors ligne

 

Pied de page des forums

Powered by FluxBB