4

Web サイトでこの Mysql クエリを実行して、膨大な量のデータを取得する必要があります: (3 つのテーブル、それぞれに 100,000 + レコード)

SELECT on_resume.*, on_users.subscribed, on_users.user_avatar, on_resume_page.*
FROM on_resume 
LEFT JOIN on_users ON (on_resume.resume_userid = on_users.user_id ) 
LEFT JOIN on_resume_page  ON ( on_resume.resume_userid = on_resume_page.resume_userid)
WHERE on_resume.active= '1' 
GROUP BY on_resume.rid 
ORDER BY on_resume.rid DESC 
LIMIT 0,18

これを Phpmyadmin sql セクションで実行すると、mysqld サービス全体がダウンし、再起動する必要があります。

今、私はこのクエリをテストしていましたが、条件を使用しないと、クエリがうまくいくことがわかりましGroup byOrder by

SELECT on_resume.*, on_users.subscribed, on_users.user_avatar, on_resume_page.*
FROM on_resume 
LEFT JOIN on_users ON (on_resume.resume_userid = on_users.user_id ) 
LEFT JOIN on_resume_page  ON ( on_resume.resume_userid = on_resume_page.resume_userid)
WHERE on_resume.active= '1' 
LIMIT 0,18

行 0 ~ 17 を表示しています (合計 18 行、クエリにかかった時間は 0.4248 秒)

どうしてこうなるのか、どうすれば直せるのでしょうか? ...

注 :どちらの場合でも、group by または Order by だけで SQL クエリをテストしましたが、そのうちの 1 つでもクエリが失敗し、サーバーがハングします。

編集:この問題は、列をon_resume_page.resume_useridインデックス化することで解決されます。

4

1 に答える 1