【发布时间】:2013-09-20 18:54:58
【问题描述】:
这是我的完整查询:
SELECT * FROM `clientgroupassign`
LEFT JOIN `clients` ON `clientgroupassign`.clientId = `clients`.clientId
LEFT JOIN `users` ON `carerId` = `userId`
LEFT JOIN
(SELECT * FROM
(SELECT * FROM `contacts` WHERE `contactGroup` = 4 ORDER BY `contactId` DESC)
as `contacts`
GROUP BY (`contactClientId`)
) AS `contacts` ON `contactClientId` = `clients`.clientId
WHERE groupId = 4
ORDER BY `clients`.clientId
第三次连接出现问题,导致脚本执行大约 1 分钟。当我在 PMA 中单独运行它时:
SELECT * FROM (SELECT * FROM `contacts` WHERE `contactGroup` = 4 ORDER BY `contactId` DESC) AS `contacts` GROUP BY (`contactClientId`)
它仍然需要很长时间才能执行。
我想要的是从contacts 为第 4 组中的每个客户(客户可以在不同的组中)获取一个最后添加的行。
谢谢。
【问题讨论】:
-
DESCRIBE/EXPLAIN对该查询显示什么? -
另外,从那里删除
SELECT * ...。选择特定列。它可能会增加开销。SELECT *可能是真正的速度杀手。
标签: php mysql sql group-by sql-order-by