Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Một hàm MySQL tùy chỉnh để tính toán khoảng cách Haversine?

Có, bạn có thể tạo một hàm được lưu trữ cho mục đích này. Một cái gì đó như thế này:

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 ;

Tôi không nghĩ rằng nó mang lại bất kỳ mức tăng tốc độ nào nhưng nó tốt vì tất cả những lý do khác mà bạn đề cập:Tính dễ đọc, khả năng tái sử dụng, dễ bảo trì (hãy tưởng tượng bạn tìm thấy lỗi sau 2 năm và bạn phải chỉnh sửa mã trong một (vài) trăm) địa điểm).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thứ tự các trường trong mệnh đề WHERE có ảnh hưởng đến hiệu suất trong MySQL không?

  2. Khóa ngoại MySQL

  3. SQL thành outfile - tệp được lưu trữ ở đâu? (MySQL, Windows)

  4. MYSQL có thể lọc theo ngày nếu ngày được lưu trữ dưới dạng văn bản không? ví dụ:02/10/1984

  5. Chọn các giá trị bắt đầu bằng một số