添加索引以优化查询,并分析EXPLAIN结果

时间:2012-10-12 10:40:14

标签: mysql

我问this question我在其中解释说我正在尝试从员工那里获得每周点数分配 - 包括已分配零的那些。

我有两张桌子:

员工(140行)IDFirstnameSurnamePositionFacultySubjectHoursAllocation

交易(140,000行)Transaction_IDDatetimeGiver_IDRecipient_IDPointsCategory_IDReason

我一直在尝试的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结果表明:

Reward System - EXPLAINed query

可悲的是,我不知道这意味着什么!如何优化查询或表以改善此查询的运行时间?

提前致谢,

1 个答案:

答案 0 :(得分:0)

您是否曾尝试在transaction.Giver_Id和transaction.dateTime上添加索引键