Bueno, en primer lugar, si tiene muchos datos geoespaciales, debería usar las extensiones geoespaciales de mysql en lugar de cálculos como este. A continuación, puede crear índices espaciales eso aceleraría muchas consultas y no tiene que escribir consultas largas como la anterior.
Usando una comparación con ST_Distancia o crear una geometría con el radio de interés junto con ST_within podría brindarle buenos resultados y podría ser mucho más rápido que el actual. Sin embargo, la forma mejor y más rápida de lograrlo es ST_Dwithin aún no está implementado en mysql.