我必须在我的网站上运行这个 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 by
并且Order 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 查询,即使其中一种仍然查询失败并挂起服务器。
编辑:这个问题是通过使列on_resume_page.resume_userid
索引来解决的。