使用半正矢公式查找附近地點
在處理資料庫中儲存的大量營業地點時,尋找效率距離給定點最近的那些變得至關重要。隨著企業數量的增加,目前檢索所有位置並逐一計算距離的方法可能會變得非常緩慢。
引入半正弦公式
半正弦公式提供考慮到地球的曲率,計算地球上兩點之間的距離的更有效方法。這可以合併到 SQL 查詢中以直接檢索最近的位置。
最佳化的SQL 查詢
使用半正弦公式最佳化的SQL 查詢如下所示:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
在此查詢中,37 和-122 分別表示給定位置的緯度和經度。距離列包含給定位置與每個商家之間的距離。 HAVING 子句過濾掉超過 25 英里(或其他所需半徑)的位置。
優點
這種最佳化方法有幾個優點:
結論
透過將Haversine公式合併到SQL查詢中,可以顯著提高查找給定點最近位置的效率,有效解決效能問題並提供可擴展的解決方案對於大型資料庫。
以上是半正矢公式如何優化在資料庫中尋找附近位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!