次のSQLステートメントを使用しています。
SELECT
SUM(t.Points) AS `Points`,
CONCAT(s.Firstname, " ", s.Surname) AS `Name`
FROM transactions t
INNER JOIN student s
ON t.Recipient_ID = s.Frog_ID
GROUP BY t.Recipient_ID
クエリの実行には21秒かかります。奇妙なことに、私が実行するLIMIT 0, 30
のにまだ20.7秒かかるとしても!
このステートメントでonを実行するEXPLAIN
と、結果は次のようになります。
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE s ALL PRIMARY NULL NULL NULL 877 Using temporary; Using filesort
1 SIMPLE t ALL NULL NULL NULL NULL 135140 Using where
トランザクションは次の形式を取ります。
Transaction_ID Datetime Giver_ID Recipient_ID Points Category_ID Reason
1 2011-09-07 36754 34401 5 6 Gave excellent feedback on the new student noteboo...
テーブルには130,000行ありtransactions
ます。
学生は次の形式を取ります。
Frog_ID UPN Firstname Surname Intake_Year
101234 K929221234567 Madeup Student 2010
テーブルには835行ありstudent
ます。
インデックス
このクエリをより効率的にする方法はありますか?