緯度と経度に基づいて半径検索を実行している高度な MySQL 検索があります。前回このようなシステムを構築したとき、クエリの速度に多くの問題がありました。私は周りを読んでいて、何人かの人々がそれを選択していることに気づきました.
SELECT *, (6271 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos( radians(long) - radians('".$lng."')) + sin(radians('".$lat."')) *
sin(radians(lat))))
AS distance
FROM carpark HAVING distance < 15 ORDER BY distance LIMIT 0 , 10";
または、where 句で実行することもできます。
Where ( 6371 * ACOS( COS( RADIANS(".$lat.") ) * COS( RADIANS( grt32sg32u_PostCodeData.lat ) )
* COS( RADIANS(PostCodeData.lon) - RADIANS(".$lon.")) + SIN(RADIANS(".$lat."))
* SIN( RADIANS(PostCodeData.lat)))) <= 15";
では、どちらが速いでしょうか?どちらも同じ速度ですか、それとも違いがありますか? このクエリを最適化する他の方法はありますか?