我有一個查詢返回所有記錄,按照距固定點的距離排序,與我的MySQL 5.7數據庫中的POINT
字段相比較。提高空間MySQL查詢的性能
舉個簡單的例子,讓我們說,它看起來是這樣的:
SELECT shops.*, st_distance(location, POINT(:lat, :lng)) as distanceRaw
FROM shops
ORDER BY distanceRaw
LIMIT 50
我實際的查詢也有做了幾個加入到得到結果的額外數據。
問題是,爲了按距離排序數據,它需要計算數據庫中每一條記錄的距離(目前大約有100,000條記錄)。
我無法緩存查詢,因爲它只會針對那些原始座標。
是否有限制必須計算的數據?例如附近商店的可靠粗略計算,例如lat
+ lng
的+/- 3度?這樣它只需要處理一部分數據呢?
如果有人在這種優化方面有任何經驗,我很樂意提供一些建議,謝謝。
我在[我的博客](http://mysql.rjweb.org/doc.php/latlng)上詳細討論了這個問題和一個很好的解決方案。 –