0

これは簡単な質問かもしれませんし、そうでないかもしれません。

指定された緯度と経度から半径 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. 半径 1 マイル以内のすべての一致する場所を提供する (機能)
  2. それらの店(作品)の名前を取得する
  3. それらの名前を「情報」テーブルの各店舗の名前と照合します
  4. 「locations.name」と「informations.name」が一致する、一致する行のすべての情報を結合します

上記のクエリは機能するようです。エラーは発生せず、使用するすべての MySQL フォーマッタで有効であると表示されます。ただし、小さなサーバーのプロセッサ使用率が最大になるエラーがどこかで発生していると思います。

より経験豊富な目に、これが発生する理由がわかりますか? 私のサーバーがほとんど役に立たないことを除いて、私はそれを認識しています。

4

1 に答える 1