【发布时间】:2018-02-08 11:59:53
【问题描述】:
现在我有这个查询
SELECT
d.domain,
r.domain_id,
r.d_lider,
u.email,
u.f_name,
u.l_name,
u.role
FROM (
SELECT r.domain_id,
count(r.id) AS d_lider
FROM bxa_request AS r
WHERE MONTH(r.created) = MONTH(CURRENT_DATE())
AND YEAR(r.created) = YEAR(CURRENT_DATE())
GROUP BY r.domain_id
ORDER BY d_lider
) AS r
LEFT JOIN bxa_user AS u
ON (
u.domain_id = r.domain_id
AND (u.role = 'A' OR u.role = 'E')
)
LEFT JOIN bxa_domain AS d
ON (r.domain_id = d.id )
WHERE r.d_lider = (
SELECT count(*) AS max
FROM bxa_request AS r
WHERE MONTH(r.created) = MONTH(CURRENT_DATE())
AND YEAR(r.created) = YEAR(CURRENT_DATE())
GROUP BY r.domain_id
ORDER BY max DESC LIMIT 1
)
ORDER BY r.d_lider DESC
但是如果我用 EXPLAIN 命令检查这个查询,我会看到哪个查询不是优化的。请帮我优化我的查询http://joxi.ru/DmBEd5puNoVJBr?d=1
我想从我的查询中排除大计数操作,可能是 join 或任何东西
【问题讨论】:
-
请将
SHOW CREATE TABLE bxa_request的输出添加到您的问题中。对bxa_user和bxa_domain表也执行相同操作。
标签: mysql sql query-optimization