Ja, u kunt hiervoor een opgeslagen functie aanmaken. Zoiets als dit:
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 ;
Ik denk niet dat het snelheidswinst oplevert, maar het is goed om alle andere redenen die je noemt:leesbaarheid, herbruikbaarheid, onderhoudsgemak (stel je vindt een fout na 2 jaar en je moet de code in een (paar) honderd plaatsen).