certaines formes d'expressions régulières simples pourraient être reconnues
et traduites en traduisant les "or" simples en unions équivalentes. Mais le
moteur Overpass n'a pas d'optimiseur statistique lui permettant de choisir
à la volée quelle forme est la meilleure. parfois l'expression régulière
est plus efficace même si elle impose un full stable scan et abandonner la
fusion d'accès indexés vers une table temporaire. Overpass n'est pas un
moteur SQL et n'a aucune idée des volumétries et probabilités et le moteur
SQL sous-jascent ne sait pas non plus toujours convertir une union
utilisant une table temporaire de fusion d'index en un seul table scan
(cela dépend d'autres critères des requêtes qui peuvent avoir des
sélectivités plus précises applicables avant dan le plan d'exécution des
requêtes. Le moteur SQL sous-jascent et sa version jouentaussi pour
beaucoup dans les formes équivalentes qu'il peut reconnaitre, et il lui
faut aussi des données en terme d'I/O et formats de tables, types de
stockage local ou "remote", cachabilité des données en mémoire, etc...
En fait c'est le moteur SQL qui est le mieux armé pour effectuer ce genre
d'optimisation et non le moteur Overpass. Il n'y a pas de façon absolument
meilleure qu'une autre sauf l'expérience avec une instance installée
spécifique et les "règles" qu'on pourrait s'imposer peuvent varier. Pour
développer ses requêts on doit alors s'appuyer sur l'expérimentation et
faire attention aux changements de versions des logiciels et matériels
sous-jascents et leur configraituon. Overpas n'offre pas de vue directe
permettant de visualiser les plans d'exécution qu'il génère vers sont
interface SQL, au moins à titre de débogage et analyse. Bref l'optimisation
reste à faire manuellement en changeant l'ordre d'écriture des critères et
en s'interrogeant sur les sélectivités et la volumétrie "à vue de nez".
Au moins avec Overpass on dispose de certains outils comme la possibilité
de mettre des limites de volumétrie pour faire des tests et savoir si une
limite (row count) est atteinte ou pas dans les limites de temps
d'exécution (pouvoir expérimenter sur un extrait arbitraire de données) et
mesurer les temps d'exécution afin de construire "dynamiquement" plusieurs
requêtes logiquement équivalentes à partir de mesures faites sur des
fragments de sous-requêtes., mais si les limites de volumétrie (row counts)
sont exploitables les limites de temps d'exécution et d'espace de stockage
temporaire ne le sont pas facilement (d'autant que cela dépend aussi de la
charge des serveurs, donc de ce que font les autres utilisateurs dans le
même temps)


Le 6 novembre 2014 20:26, Jérôme Seigneuret <jseigneuret-...@yahoo.fr> a
écrit :

> A voir aussi le délais que tu passes dans la requête overpass *timeout* .
>
> Après il est vrai que faire une requête type like sur des valeurs précise
> c'est pas à faire. Il y a eu une demande pour prendre en compte les "and"
> et "or" pour des valeurs précise dans overpass.
>
>
>
> Le 6 novembre 2014 18:22, Yves Pratter <yves.prat...@gmail.com> a écrit :
>
>> Pierre
>>
>> lorsque je sélectionnais  <has-kv k="highway"
>> regv="trunk|primary|secondary" /> le téléchargement s'arrêtait en cours de
>> route.
>>
>> Les expressions rationelles prennent du temps. Dans ton cas tu veux les
>> trunk *et* les primary *et* les secondary, donc pas besoin de ces
>> expressions.
>>
>> essaie ceci qui doit être plus efficace :
>>
>>   <union>
>>     <query type=‘way’>       <has-kv k="highway" v="trunk" />
>>     </query>
>>
>>     <query type=‘way’>       <has-kv k="highway" v=« primary" />
>>     </query>
>>
>>     <query type=‘way’>       <has-kv k="highway" v=« secondary" />
>>     </query>
>>
>>   </union>
>>
>> —
>> Yves
>>
>>
>>
>>
>>
>> _______________________________________________
>> Talk-fr mailing list
>> Talk-fr@openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/talk-fr
>>
>>
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr@openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
>
>
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à