Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment optimiser une requête SQL en calculant la distance par longitude et latitude ?

Voici quelques idées, dont certaines peuvent ne pas s'appliquer en fonction de votre situation exacte.

  1. Vous pouvez convertir la latitude et la longitude en radians et les stocker également dans la ligne. Cela permettrait d'économiser le coût de ces calculs (en fait, le coût serait comptabilisé une fois lors du stockage des données).
  2. Si votre tableau est très volumineux, vous pouvez utiliser un simple calcul de distance linéaire plutôt que la formule Haversince pour limiter les résultats auxquels vous appliquez la formule Haversince.
  3. Si vous avez d'autres données dans le tableau qui pourraient servir de bon premier filtre (pays/région/etc.), vous pouvez les appliquer en premier.
  4. Vous pouvez réorganiser vos jointures afin qu'elles soient appliquées après le filtre de distance afin de ne pas supporter le coût de la jointure sur des données non éligibles.