mysqldbを使用します。空間インデックスを持つポイントタイプである「latlong」列があります。緯度と経度に4マイル近い最も近い場所を取得したいと思います。
これまでのところ私はこれを持っています...
SELECT `postcode`,county, ( 3959 * acos( cos( radians(51.585738) ) * cos( radians( x(GeomFromText(astext(latlong))) ) ) * cos( radians( y(GeomFromText(astext(latlong))) ) - radians(-0.260878) ) + sin( radians(51.585738) ) * sin( radians( x(GeomFromText(astext(latlong))) ) ) ) ) AS distance
FROM uk_p HAVING distance < 4 ORDER BY distance LIMIT 0 , 20
私は2900レコードしか持っておらず、約0.0277秒かかります。データベースが大きくなるにつれて、このクエリが遅くなるのではないかと心配しているので、このクエリを最適化する方法はありますか...