1) pkoi tu passes par une table temporaire ?
2) niveau perfs, tu gagneras rien, mais c'est plus propre de passer par une FONCTION qui fait un "returns table"
au final, t'auras juste à faire un :
Code :
- return (select idcity, cityname, ... from cities where --ta fonction de calcul de la distance par rapport à la latitude/longitude passée en paramètre-- <= @limite)
|
Ca devrait aller autrement plus vite, puisque tu ne passeras plus par une table temporaire.
Pense bien à créer un index unique sur latitude/longitude. Ca ne sera pas forcément beaucoup plus rapide mais bon.
Pour le calcul, et surtout, te servir de l'index, tu peux faire ce qu'on appelle un "clip" en GDI : tu sais que si les latitudes/longitudes sont en dehors d'un certain carré, ou l'un ou l'autre est a plus de "@limite" d'écart, il sera trop loin. Tu rajoutes donc between sur latitude + @limite et -@limite, et pareil sur longitude, afin d'utiliser l'index unique que je t'ai fait créer, et éviter de faire le calcul de distance pour toutes les villes, ce qui est totalement inutile.
Message édité par Arjuna le 17-07-2006 à 10:32:37