PHP bir haversinüs formül SQL arama optimizasyonu

2 Cevap php

Ben haversinüs forumula kullanarak mesafeyi hesap yapıyorum, PHP kullanarak bir MySQL çağrı oluşturma:

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 

Benim sorum; SQL'in tüm bu hesaplama yapmak için en iyisidir? Bu sorgu, yaklaşık 1000 kayıtlarında bir tablo arar. PHP içinde matematik bazı ziyade SQL yapmak daha verimli olacaktır? Bu sorguyu optimize etmek için daha iyi bir yolu var mı?

2 Cevap

Sen Haversine Formula (ki biraz daha yavaş), Spherical Law of Cosines formula değil kullanıyoruz.

MySQL matematik yapıyor muhtemelen çok daha hızlı olacaktır, ben read this question Ben bir süre geri istedi, hız optimizasyonları gibi kesinlikle mükemmel Geo Proximity Search with MySQL {[(2) okumalısınız için tavsiye ]} .

Bir süper hızlı MySQL dizinleyicisine için, Check out Sphinx. Bu sizin MySQL veritabanı ne gerek bulmak için son derece hızlı ve jeo / mesafe hesaplamaları otomatik olarak yapar.

Öğretici: Geo/Spatial Search Using Sphinx Search and PHP