2010-02-09 9 views
9

Sto creando una chiamata in MySQL utilizzando PHP, che sto calcolando distanza utilizzando il Forumula haversine:Ottimizzare una formula chiamata SQL haversine in PHP

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 

La mia domanda è; è meglio fare tutto questo calcolo in SQL? Questa query cerca una tabella con circa 1000 record. Sarebbe più efficiente fare un po 'di matematica in PHP piuttosto che in SQL? C'è un modo migliore per ottimizzare questa query?

risposta

4

State usando il Spherical Law of Cosines formula, non il Haversine Formula (che è leggermente più lento).

Facendo due conti in MySQL sarà probabilmente molto più veloce, vi consiglio di read this question ho chiesto un po 'indietro, come per le ottimizzazioni di velocità si dovrebbe assolutamente leggere l'eccellente carta Geo Proximity Search with MySQL, prestare particolare attenzione alle pagine 8- 14 e 19.

+0

puoi dirmi quale formula, finalmente, dobbiamo usare? – Hunt

Problemi correlati