使用MySQL 找出某個範圍內的座標
為了提高資料庫效能並減少處理需求,需要最佳化檢索特定資料的查詢指定範圍。在此場景中,您有一個包含 100,000 個地址的資料庫,每個地址都有其緯度和經度座標。您的目標是僅顯示給定使用者位置 5 英里半徑內的位址,從而有效地將結果從 100,000 個縮小到大約 5 或 6 個。
要有效解決此問題,您可以利用直接在 MySQL 查詢中使用半正矢公式。此數學公式使用各自的緯度和經度值計算球體上兩點之間的距離。
以下是如何將半正弦公式合併到查詢中:
$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 中套用半正矢公式,您可以大幅減少檢索的記錄數量並提高您的效能資料庫操作。此方法可確保僅返回相關地址,從而最大限度地減少不必要的處理並提高應用程式的回應能力。
以上是如何使用MySQL高效率找出5英里半徑內的座標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!