MySQL を使用して半径 5 マイル以内の座標を効率的に見つけるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-01 01:56:28
オリジナル
288 人が閲覧しました

How to Efficiently Find Coordinates Within a 5-Mile Radius Using MySQL?

MySQL を使用した範囲内の座標の検索

データベースのパフォーマンスを向上させ、処理要求を軽減するには、範囲内の特定のデータを取得するクエリを最適化することが望ましいです。指定された範囲。このシナリオでは、100,000 の住所を含むデータベースがあり、それぞれに緯度と経度の座標が含まれています。目標は、特定のユーザーの場所から半径 5 マイル以内にある住所のみを表示し、結果を 100,000 件から 5 ~ 6 件程度に効果的に絞り込むことです。

この問題を効率的に解決するには、 MySQL クエリで直接 Haversine 式を使用できます。この数式は、それぞれの緯度と経度の値を使用して球上の 2 点間の距離を計算します。

クエリにハバーサインの公式を組み込む方法は次のとおりです。

$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
ログイン後にコピー

このクエリでは、$lat と $lng をユーザーの場所の緯度と経度の座標に置き換えます。このクエリの結果は、距離列で指定されたユーザーの場所からの距離を含む住所のリストになります。次に、このリストを使用して、5 マイルの範囲内にあるアドレスをフィルターで除外できます。

MySQL で Haversine 式を直接適用することで、取得するレコードの数を大幅に削減し、パフォーマンスを向上させることができます。データベース操作。このメソッドにより、関連するアドレスのみが返されるため、不必要な処理が最小限に抑えられ、アプリケーションの応答性が向上します。

以上がMySQL を使用して半径 5 マイル以内の座標を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!