0

我问了这个问题,我解释说我正在尝试从员工那里获得每周的积分分配——包括那些分配为零的人。

我有两张桌子:

职员(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表明:

奖励系统 - 解释查询

可悲的是,我不知道那是什么意思!如何优化我的查询或表以提高此查询的运行时间?

提前致谢,

4

1 回答 1

0

您是否尝试过在 transaction.Giver_Id 和 transaction.dateTime 上简单地添加索引键

于 2012-10-12T10:47:30.303 回答