0

私はこの質問をして、スタッフのメンバーから毎週のポイント割り当てを取得しようとしていると説明しました-割り当てられたゼロを含む.

私は2つのテーブルを持っています:

スタッフ( 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このクエリの結果は次のように述べています。

報酬システム - EXPLAINed クエリ

残念ながら意味がわかりません!クエリまたはテーブルを最適化して、このクエリの実行時間を改善するにはどうすればよいですか?

前もって感謝します、

4

1 に答える 1

0

transaction.Giver_Id と transaction.dateTime に単純にインデックス キーを追加してみましたか?

于 2012-10-12T10:47:30.303 に答える