ホームページ >データベース >mysql チュートリアル >MySQL で半径内の住所に対する地理空間クエリを最適化する方法

MySQL で半径内の住所に対する地理空間クエリを最適化する方法

DDD
DDDオリジナル
2024-11-02 03:23:02351ブラウズ

How to Optimize GeoSpatial Queries in MySQL for Addresses Within a Radius?

範囲内の MySQL マップの地理空間クエリ

指定された範囲内の特定の場所を表示するために大規模なデータベースから地理データをクエリすることは、一般的な課題です地図アプリケーションで。この質問では、ユーザーの指定された地理位置情報から半径 5 マイル以内の住所の取得を最適化する方法を検討します。

距離計算のためのハバシン式

間の距離を決定するには地球の表面上の 2 点では、ハバーサイン公式が使用されます。この数式は、地球の曲率と点の緯度と経度を考慮して、大圏の距離を計算します。

Haveline Formula を使用したクエリの最適化

Haversine 式。提供された MySQL クエリは、目的の範囲内にあるアドレスのみを取得します:

$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: ユーザーの現在位置の座標。
  • latlng: 各住所の座標を含むテーブルの列.
  • 3959: マイル単位の地球の半径 (キロメートルの場合は 6371 に変換)。
  • distance: ユーザーの位置と各住所の間の計算された距離.

Result

クエリは、それぞれの計算された距離を含むアドレスのリストを出力します。 HAVING 句を使用すると、指定した半径 5 マイル内の住所のみが確実に取得されるため、より効率的かつ的を絞ったレコードの選択が可能になります。このアプローチにより、転送および処理されるデータの量が大幅に削減され、地図アプリケーションの全体的なパフォーマンスが向上します。

以上がMySQL で半径内の住所に対する地理空間クエリを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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