首頁  >  文章  >  資料庫  >  如何在MySQL中使用半正矢公式有效率地查詢特定範圍內的位址?

如何在MySQL中使用半正矢公式有效率地查詢特定範圍內的位址?

Patricia Arquette
Patricia Arquette原創
2024-11-01 18:20:30422瀏覽

How to Efficiently Query for Addresses Within a Specific Range in MySQL using the Haversine Formula?

用於選擇指定範圍內座標的MySQL查詢

在您的資料庫中,您有大量的位址,每個位址都有自己的緯度和經度。您希望使用 Google Maps API 在地圖上僅顯示指定使用者位置 5 英里半徑範圍內的位址。

為了避免不必要地檢索所有記錄並在 Java 中執行距離計算,這將是低效的,考慮在 MySQL 查詢中使用半正矢公式。此公式將計算地球表面上兩點之間的距離。以下是修改後的查詢:

<code class="sql">SELECT *, (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance
FROM your_table
HAVING distance < 5</code>

在此查詢中,將問號 (?) 替換為使用者位置的緯度和經度值(Java 程式碼中的 $lat 和 $lng)。距離列將儲存每個位址與使用者位置之間的距離。

透過使用此查詢,您將只檢索指定範圍內的位址,優化您的查詢效能。

以上是如何在MySQL中使用半正矢公式有效率地查詢特定範圍內的位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn