我正在使用以下 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秒!
如果我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
。
索引
有没有办法让这个查询更有效率?