私はこの質問をして、スタッフのメンバーから毎週のポイント割り当てを取得しようとしていると説明しました-割り当てられたゼロを含む.
私は2つのテーブルを持っています:
スタッフ( 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
このクエリの結果は次のように述べています。
残念ながら意味がわかりません!クエリまたはテーブルを最適化して、このクエリの実行時間を改善するにはどうすればよいですか?
前もって感謝します、