"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ## ¿Cómo optimizar las consultas MySQL para búsquedas de geolocalización precisas utilizando latitud y longitud?

## ¿Cómo optimizar las consultas MySQL para búsquedas de geolocalización precisas utilizando latitud y longitud?

Publicado el 2024-11-14
Navegar:657

## How to Optimize MySQL Queries for Accurate Geolocation Searches Using Latitude and Longitude?

Optimización de consultas MySQL para búsquedas de geolocalización utilizando latitud y longitud

En MySQL, recuperar datos basados ​​en la proximidad geográfica es una tarea común. Cuando se trabaja con valores de longitud y latitud, es esencial utilizar consultas eficientes para evitar resultados inesperados.

Considere la siguiente consulta que intenta buscar filas dentro de un radio de 25 millas de un centro de latitud y longitud:

SELECT *,(((acos(sin(($lat*pi()/180)) * sin((`latitude`*pi()/180)) cos(($lat*pi()/180))
* cos((`latitude`*pi()/180)) * cos((($lon - `longitude`)*pi()/180))))*180/pi())*60*1.1515)
AS `distance` FROM `geo_locations` HAVING `distance` 

Si bien esta consulta generalmente funciona, puede producir resultados inexactos para algunas filas, mostrándolas mucho más alejadas de lo especificado radio.

Para mejorar la precisión, considere la siguiente consulta optimizada:

SELECT
    `id`,
    (
        6371 *
        acos(
            cos( radians( :lat ) ) *
            cos( radians( `lat` ) ) *
            cos(
                radians( `long` ) - radians( :long )
            )  
            sin(radians(:lat)) *
            sin(radians(`lat`))
        )
    ) `distance`
FROM
    `location`
HAVING
    `distance` 

En esta consulta, los parámetros :lat y :long representan la latitud y longitud del punto central, y :distance representa el radio en millas.

La diferencia clave entre las dos consultas es el uso de 6371 como factor de conversión para convertir radianes a millas. Este factor es más preciso que 3959, que se utiliza en la consulta original. Además, la consulta optimizada utiliza una fórmula más estricta para calcular la distancia en función de la latitud y la longitud.

Al implementar estas optimizaciones, puede mejorar significativamente la precisión de sus consultas MySQL al realizar búsquedas de geolocalización utilizando valores de latitud y longitud. asegurando que los resultados estén siempre dentro de la distancia del radio especificado.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3