2010-02-09 7 views
9

estoy creando una llamada MySQL usando PHP, estoy calculando la distancia utilizando el forumula haversine:Optimización de una fórmula llamada SQL en PHP haversine

SELECT name, id, 
    (6371 * acos(cos(radians(' . $lat . ')) 
    * cos(radians(geoname.latitude)) 
    * cos(radians(geoname.longitude) - radians(' . $lon . ')) 
    + sin(radians(' . $lat . ')) 
    * sin(radians(geoname.latitude)))) AS distance 

Mi pregunta es; ¿Es mejor hacer todo este cálculo en SQL? Esta consulta busca en una tabla con alrededor de 1000 registros. ¿Sería más eficiente hacer algunas de las matemáticas en PHP en lugar de SQL? ¿Hay una mejor manera de optimizar esta consulta?

Respuesta

4

Usted está utilizando el Spherical Law of Cosines formula, no el Haversine Formula (que es ligeramente más lento).

Hacer las matemáticas en MySQL probablemente será mucho más rápido, yo le aconsejo que read this question pregunté hace un tiempo, como para optimizaciones de velocidad que sin duda debe leer el excelente documento Geo Proximity Search with MySQL, prestar especial atención a las páginas 8- 14 y 19.

+0

¿podría decirme qué fórmula finalmente tenemos que usar? – Hunt

Cuestiones relacionadas