0

緯度と経度に基づいて半径検索を実行している高度な 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";

では、どちらが速いでしょうか?どちらも同じ速度ですか、それとも違いがありますか? このクエリを最適化する他の方法はありますか?

4

1 に答える 1