使用MySQL高效檢索指定範圍內的位址
要有效檢索給定位置5英里半徑內的位址,在Java 中檢索所有100,000 個位址併計算距離的效率很低。相反,MySQL 透過半正弦公式提供了合適的解決方案。
半正弦公式計算球體上兩點之間的大圓距離,在本例中為使用者的位置和每個位址。使用此公式,您可以建構如下 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 代表位址座標。透過應用半正弦公式,查詢計算每個位址與使用者位置之間的距離,並僅選擇 5 英里範圍內的位址。
透過利用此方法,您可以有效率地檢索需要查詢的位址。顯示在地圖上,同時避免計算所有 100,000 個位址的距離的昂貴計算任務。
以上是如何使用MySQL高效率檢索指定範圍內的位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!