用於選擇指定範圍內座標的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中文網其他相關文章!