ホームページ >データベース >mysql チュートリアル >MySQL を使用して指定された範囲内のアドレスを効率的に取得するにはどうすればよいですか?

MySQL を使用して指定された範囲内のアドレスを効率的に取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 15:13:03255ブラウズ

How to Efficiently Retrieve Addresses within a Specified Range using MySQL?

MySQL を使用して指定範囲内の住所を効率的に取得する

指定された場所から半径 5 マイル以内の住所を効率的に取得するには、次のようにします。 Java で 100,000 個のアドレスすべてを取得して距離を計算するのは非効率的です。代わりに、MySQL は、Haversine の公式を通じて適切なソリューションを提供します。

Haversine の公式は、球上の 2 点間の大圏距離 (この場合はユーザーの位置と各住所) を計算します。この式を使用すると、次のように MySQL クエリを構築できます。

<code class="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;</code>

上記のクエリでは、$lat と $lng はユーザーの座標を表し、lat と lng は住所座標を表します。 Haversine 式を適用することで、クエリは各住所とユーザーの場所の間の距離を計算し、5 マイルの範囲内にあるものだけを選択します。

このアプローチを利用することで、必要な住所を効率的に取得できます。 100,000 のすべての住所の距離を計算するという計算量の多いタスクを回避しながら、地図上に表示されます。

以上がMySQL を使用して指定された範囲内のアドレスを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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