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).