Details
Description
I think the diff makes the problem clear.
Index: lib/grade/grade_item.php
@@ -871,7 +871,7 @@
* @return object Grade_category
*/
function load_item_category() {
- if (empty($this->category->id)) {
+ if (empty($this->item_category->id)) {
$this->item_category = $this->get_item_category();
}
return $this->item_category;
This was causing one DB query per category, per student, when showing the grader report, which is very, very bad.
Andy, adding you as QA assignee, because I believe you are Mr Gradebook these days.
Issue Links
| This issue has been marked as being related by: | ||||
| MDL-22110 | Check the gradebook for additional O(n) queries |
|
|
|
This issue has been fixed.
However, there seems to be plenty more unnecessarily inefficient database usage in the gradebook.
Andy, if you have time, can I suggest you do something to log every database query. For example just added
at the top of Execute in lib/adodb/adodb.inc.php in 1.9. Then load various gradebook pages, and try to work out why is uses so many repeated queries (then fix it). Thanks.