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