これは簡単な質問かもしれませんし、そうでないかもしれません。
指定された緯度と経度から半径 1 マイル以内のすべての場所を選択するクエリがあります。その部分は完全に機能しますが、別のテーブル内に追加情報があり、それを照合したいと考えています。LEFT JOIN を試しましたが、タイムアウトしています。
SELECT *,
( 3959 * acos( cos( radians(40.7143528) ) * cos( radians( lat ) )
* cos( radians( lon ) - radians(-74.0059731) ) + sin( radians(40.7143528) )
* sin( radians( lat ) ) ) ) AS distance
FROM locations
LEFT JOIN informations ON
locations.name = informations.name
HAVING distance < 1
このクエリでやりたいことは次のとおりです。
- 半径 1 マイル以内のすべての一致する場所を提供する (機能)
- それらの店(作品)の名前を取得する
- それらの名前を「情報」テーブルの各店舗の名前と照合します
- 「locations.name」と「informations.name」が一致する、一致する行のすべての情報を結合します
上記のクエリは機能するようです。エラーは発生せず、使用するすべての MySQL フォーマッタで有効であると表示されます。ただし、小さなサーバーのプロセッサ使用率が最大になるエラーがどこかで発生していると思います。
より経験豊富な目に、これが発生する理由がわかりますか? 私のサーバーがほとんど役に立たないことを除いて、私はそれを認識しています。