我问了这个问题,我解释说我正在尝试从员工那里获得每周的积分分配——包括那些分配为零的人。
我有两张桌子:
职员(140 行) ID
, Firstname
, Surname
, Position
, Faculty
, Subject
, Hours
,Allocation
事务(140,000 行)Transaction_ID
, Datetime
, Giver_ID
, Recipient_ID
, Points
, Category_ID
,Reason
我一直在尝试的 SQL 语句是这样的:
SELECT
CONCAT(s.Firstname, " ", s.Surname) AS `Staff Name`,
COALESCE(SUM(t.Points), 0) AS `Points Allocated`
FROM staff s
LEFT JOIN transactions t ON t.Giver_ID = s.ID and t.Datetime >='2012-10-08'
GROUP BY s.ID
ORDER BY `Points Allocated` ASC
查询按预期工作,但运行大约需要 6 秒。
index
我在两张桌子上唯一的就是他们的主键。
此查询的结果EXPLAIN
表明:
可悲的是,我不知道那是什么意思!如何优化我的查询或表以提高此查询的运行时间?
提前致谢,