範囲内の 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";
パラメータと変数
Result
クエリは、それぞれの計算された距離を含むアドレスのリストを出力します。 HAVING 句を使用すると、指定した半径 5 マイル内の住所のみが確実に取得されるため、より効率的かつ的を絞ったレコードの選択が可能になります。このアプローチにより、転送および処理されるデータの量が大幅に削減され、地図アプリケーションの全体的なパフォーマンスが向上します。
以上がMySQL で半径内の住所に対する地理空間クエリを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。