私は特にMYSQLクエリについて知識がなく、それらを最適化していないので、私は少し助けが必要です。私は国際的な都市のテーブルをチェックして、テーブルの経度と緯度の値に基づいて最も近い10の都市を探します。この非常に遅いMySQLクエリの最適化
次のように私はこれを使用しているクエリである:
SELECT City as city,
SQRT(POW(69.1 * (Latitude - 51.5073509), 2) +
POW(69.1 * (-0.1277583 - Longitude) * COS(Latitude/57.3), 2)) AS distance
from `cities`
group by `City`
having distance < 50
order by `distance` asc
limit 10
(経度&緯度値は明らかに自分のコードに動的に配置されている)
時々これは約3-4 mintuesを取ることができます私の開発環境を完成させる。
私はここで古典的な間違いを犯しましたか、このデータを取得するためにはるかに良いクエリがありますか?
ご協力いただければ幸いです。 City
を想定し
実行計画を提供できますか? – Jester
選択の計算は一般的に遅いので、私はあなたの問題だと思っています。 – Jester
http://stackoverflow.com/a/38771805/267540およびhttp://stackoverflow.com/a/38548557/267540 – e4c5