sql >> データベース >  >> RDS >> Mysql

Haversine距離を計算するためのカスタムMySQL関数?

    はい、この目的のためにストアド関数を作成できます。このようなもの:

    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 ;
    

    速度が上がるとは思いませんが、読みやすさ、再利用性、メンテナンスのしやすさ(2年後にエラーが見つかり、コードを数百で編集する必要があると想像してください)など、他のすべての理由で良いと思います。場所)。




    1. Mysqlサブクエリの順序

    2. mysqlclientをインストールできません

    3. Ubuntu14.04にMySQLをインストールします

    4. MySQLUpdateコマンドが機能しない