ホームページ  >  記事  >  データベース  >  MySQL を使用して半径 5 マイル以内の座標を効率的に見つけるにはどうすればよいですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 01:56:28291ブラウズ

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 サイトの他の関連記事を参照してください。

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