我有一个像下面这样的查询,请帮忙给出适当的索引,联系人表有超过20K的记录,并且需要将近20秒才能加载。 希望通过group by子句提出问题,如果我删除group by子句总记录超过300k。MYSQL GROUP BY - 缓慢查询
SELECT `a`.*, CONCAT(a.`firstname`, " ", a.`lastname`) AS `cont_name`, CONCAT(a.`position`, "/", a.`company`) AS `comp_pos`, `e`.`name` AS `industry_name`, CONCAT(f.`firstname`, " ", f.`lastname`) AS `created_by`
FROM `contacts` AS `a`
LEFT JOIN `user_centres` AS `b` ON a.user_id = b.user_id
LEFT JOIN `group_contacts` AS `c` ON a.id = c.contact_id
LEFT JOIN `groups` AS `d` ON c.group_id = d.id
LEFT JOIN `industries` AS `e` ON e.id = a.industry_id
LEFT JOIN `users` AS `f` ON f.id = a.user_id
WHERE (1)
GROUP BY `a`.`id`
ORDER BY `a`.`created` desc
解释显示像这样 - 20145使用临时;使用文件排序
删除'组by'。你没有聚合功能,所以看起来没有必要。 – 2015-03-31 12:19:33
你可以发布完整的解释和表格布局吗? LEFT OUTER JOINs是必需的,还是只能使用INNER JOIN? – Kickstart 2015-03-31 12:22:37
LEFT JOIN'group_contacts' as'c' ON a.id = c.contact_id LEFT JOIN' groups'由于'd' ON c.group_id = d.id是不必要的连接...删除它 – Javaluca 2015-03-31 12:25:46