Ja, Sie können zu diesem Zweck eine gespeicherte Funktion erstellen. Etwa so:
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 ;
Ich glaube nicht, dass es Geschwindigkeitsgewinne bietet, aber es ist gut für alle anderen Gründe, die Sie erwähnen:Lesbarkeit, Wiederverwendbarkeit, Wartungsfreundlichkeit (stellen Sie sich vor, Sie finden nach 2 Jahren einen Fehler und müssen den Code in (ein paar) Hunderten bearbeiten Orte).