指定された範囲内の座標を選択するための MySQL クエリ
データベースには、それぞれ独自の緯度を持つ膨大な数の住所があります。そして経度。 Google Maps API を使用して、指定したユーザーの場所から半径 5 マイル以内の住所のみを地図上に表示したいとします。
Java で不必要にすべてのレコードを取得して距離計算を実行することを避けるため、非効率になります。 MySQL クエリ内で Haversine 式を利用することを検討してください。この式は、地球の表面上の 2 点間の距離を計算します。変更されたクエリは次のとおりです。
<code class="sql">SELECT *, (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance FROM your_table HAVING distance < 5</code>
このクエリでは、疑問符 (?) をユーザーの場所の緯度と経度の値 (Java コードの $lat と $lng) に置き換えます。距離列には、各住所とユーザーの位置の間の距離が保存されます。
このクエリを使用すると、指定された範囲内の住所のみが取得され、クエリのパフォーマンスが最適化されます。
以上がHaversine 式を使用して MySQL の特定の範囲内のアドレスを効率的にクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。