ホームページ  >  記事  >  データベース  >  Haversine 式を使用して MySQL の特定の範囲内のアドレスを効率的にクエリする方法

Haversine 式を使用して MySQL の特定の範囲内のアドレスを効率的にクエリする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-01 18:20:30422ブラウズ

How to Efficiently Query for Addresses Within a Specific Range in MySQL using the Haversine Formula?

指定された範囲内の座標を選択するための 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。