2012-10-12 35 views
0

我詢問了this question,其中我解釋了我正在嘗試從員工成員(包括那些分配了零的員工)獲得每週點分配。添加索引以優化查詢並分析EXPLAIN結果

我有兩個表:

職員(140行)IDFirstnameSurnamePositionFacultySubjectHoursAllocation

交易(140,000行)Transaction_IDDatetimeGiver_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結果指出:

Reward System - EXPLAINed query

可悲的是,我不知道這意味着什麼!我該如何優化我的查詢或表以提高此查詢的運行時間?

由於提前,

+0

指數't.Giver_ID'和't.Datetime'和檢查會發生什麼。 –

+0

啊,好多了..!現在0.9秒。我能做的就是@ N.B。嗎? – dunc

+0

還有其他的優化方法,如使用InnoDB引擎和增加它的'innodb_buffer_pool_size'變量,所以檢查你使用的是什麼引擎,如果InnoDB已經不是InnoDB,只需將表更改爲InnoDB即可。 –

回答

0

您是否嘗試過簡單地增加對transaction.Giver_Id的索引鍵也transaction.dateTime