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é ?

#1 Thu 02 December 2004 11:22

Maurice Nadal
Invité

requete geographique sur 2 tables...help

De: Maurice Nadal
Bonjour,
Je cherche dans la table 'comm' (36000 objets) celles qui sont tangentes au pourtour d'une region donnee (table 'reg', 22 objets). Si je demande:
Select * from comm where comm.obj intersects any (select obj from reg where reg.nom = ''truc'') and comm.nom_region ''truc''.....
rien n'aboutit apres 1 heure !!!
Je m'en sors (parce que l'info. figure dans la table 'comm') en demandant:
Select * from comm where obj Intersects any (select obj from comm where nom_reg=''truc'') and nom_reg''truc''
puis en inversant deux fois la selection de 'comm' !
Qu'est-ce que je fais mal ? Ou pourquoi MI est-il si ''mauvais'' sur la requete sur 2 tables, dont une ''lourde'' ..??
Pour 'motiver' Claritas: sous mon vieil ArcView3, la manip sur les 2 memes tables prend une minute!!
Merci de tout eclairage...

 

#2 Thu 02 December 2004 11:22

Geo Maumet
Invité

Re: requete geographique sur 2 tables...help

Bonjour
J'ai teste vos deux selections avec les tables communes et regions france
entiere et pas de pb, les deux selections se sont executees en moins de 10
secondes.
Voir au niveau des index sur les codes et noms de regions ?
Laurent

 

#3 Thu 02 December 2004 16:54

Geo Maumet
Invité

Re: requete geographique sur 2 tables...help

Bonjour
Je viens d'effectuer le meme test sur la BdCarthage France entiere (meme fond
que BdCarto) et la les temps de reponse passent a 3 minutes.
Laurent

 

#4 Tue 14 December 2004 17:52

Maurice Nadal
Invité

Re: requete geographique sur 2 tables...help

De: Maurice Nadal
Bonjour,
En....conclusion, apres tests, il n'y a qu'une methode efficace en temps (et concurrentielle avec le temps mis par d'autres logiciels!):
Select * from comm where obj intersects any (select obj from comm where nom_reg=''truc'') and not nom_reg=''truc'' group by insee into truc
...qui prend environ une minute, puis:
Select * from comm, truc where comm.insee = truc.insee into resultat......quelques secondes.
J'introduis le 'not' dans la requete 1 car le forum ne supporte pas les signes sup et inf...!
Si un tableau suffit, pas besoin de la requete 2
Les requetes avec produit cartesien de tables sont donc a eviter et s'il faut munir la table 'comm' de l'attribut nom_reg (bien sur pas par une requete spatiale, sinon on est ramene au probleme precedent!)...autant le faire !
Le temps ainsi ''perdu'' est largement rembourse.
Merci pour les reponses et bon courage

 

Pied de page des forums

Powered by FluxBB