Bonjour, > De : "sly (sylvain letuffe)"
> > J'ai peur que ma réponse puisse tomber tout à fait à coté de la plaque, mais > histoire que tu te sentes soutenu dans ton problème ;-) > > Perso, j'ai un peu peur de cette condition : > > > WHERE > > b.osm_id = ANY(planet_osm_rels.parts); > > Non pas que je vois une meilleure idée, mais j'ai peur que ça n'utilise aucun > index et que ça oblige postgresql à la résoudre en séquenciel, et séquenciel, > ça peut vouloir dire beaucoup > > > > Celà prend énormément de temps (au moins > 1heure), alors que dans ma > > base des pistes de ski je n'ai que 3319 relations et 67235 ways. > > > > Celà ne me semble pas si complexe ?? > > ça peut faire 3319 * 67235 boucles (sachant que planet_osm_rels.parts c'est > déjà un tableau à parcourir !) > > Tu peux tenter la même requete mais avec un EXPLAIN devant ? > genre : > explain select * from bidule; > > ça te donnera le "plan de résolution" de ta requête (nombre de boucles, > indexes utilisés, etc.) > J'utilise un autre moyen (je ne dis pas qu'il est propre !) avec "array_to_string" : http://www.postgresql.org/docs/9.1/static/functions-array.html SELECT (...) WHERE '#'||array_to_string(planet_osm_rels.parts,'#')||'#' like '%#'||b.osm_id::char||'#%' Sur des petits jeux de données, c'est immédiat. À voir chez toi. vincent Une messagerie gratuite, garantie à vie et des services en plus, ça vous tente ? Je crée ma boîte mail www.laposte.net _______________________________________________ dev-fr mailing list [email protected] http://lists.openstreetmap.org/listinfo/dev-fr
