現在、私は100k +行のテーブルをいくつか持っています。私は次のようなデータを検索しようとしています。半径の範囲内のポイントのために大きなテーブルを検索する最も速い方法は何ですか?MySQL(緯度経度)
SELECT
*, SQRT(POW(69.1 * (latitude - '49.1044302'), 2) + POW(69.1 * ('-122.801094' - longitude) * COS(latitude/57.3), 2)) AS distance
FROM stops
HAVING distance < 5
ORDER BY distance limit 100
現在のところ、この方法は高負荷では速度が遅くなります。いくつかのクエリは完了までに20秒以上かかります。
これを最適化する方法がわかっていれば、すばらしいことになります。
[_scalable lat/lng searches_](https://mariadb.com/kb/en/latitudelongitude-indexing/) –
提案されているようにmysqlの地理空間型をチェックアウトしましたか? – e4c5