Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Fungsi MySQL khusus untuk menghitung jarak Haversine?

Ya, Anda dapat membuat fungsi tersimpan untuk tujuan ini. Sesuatu seperti ini:

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 ;

Saya tidak berpikir itu menawarkan peningkatan kecepatan tetapi itu bagus untuk semua alasan lain yang Anda sebutkan:Keterbacaan, dapat digunakan kembali, kemudahan perawatan (bayangkan Anda menemukan kesalahan setelah 2 tahun dan Anda harus mengedit kode dalam (beberapa) ratus tempat).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghitung dan memesan

  2. MySQL Query untuk menerima kombinasi acak dari dua tabel

  3. Mengapa kami menutup hasil di Mysqli

  4. Cara membuat koneksi database baru di Django

  5. Bagaimana cara menulis ulang kueri MySQL ini sehingga tidak menimbulkan kesalahan ini:Anda tidak dapat menentukan tabel target 'crawlLog' untuk pembaruan dalam klausa FROM?