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

Une fonction MySQL personnalisée pour calculer la distance Haversine ?

Oui, vous pouvez créer une fonction stockée à cet effet. Quelque chose comme ça :

DELIMITER //
  DROP FUNCTION IF EXISTS Haversine //
  CREATE FUNCTION Haversine
    ( myLat FLOAT
    , myLong FLOAT
    , db_lat FLOAT
    , db_long FLOAT
    , unit VARCHAR(20)
    )
    RETURNS FLOAT
      DETERMINISTIC
    BEGIN
      DECLARE haver FLOAT ;

      IF unit = 'MILES'                    --- calculations
        SET haver = ...                --- calculations

      RETURN haver ;
    END  //
DELIMITER ;

Je ne pense pas qu'il offre des gains de vitesse mais c'est bien pour toutes les autres raisons que vous citez :Lisibilité, réutilisabilité, facilité de maintenance (imaginez que vous trouvez une erreur au bout de 2 ans et que vous devez éditer le code en une (quelques) centaine lieux).