]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-17038 - refine query to limit size of returned data.
authorpeterbulmer <peterbulmer>
Thu, 30 Oct 2008 01:16:06 +0000 (01:16 +0000)
committerpeterbulmer <peterbulmer>
Thu, 30 Oct 2008 01:16:06 +0000 (01:16 +0000)
Author: Peter Bulmer <peter.bulmer@catalyst.net.nz>

auth/mnet/auth.php

index b393526cc48c3649fa8893d7b44e81f9166f3ed3..32b773ab4fa2add9600361ad316080b372607679 100644 (file)
@@ -772,32 +772,28 @@ class auth_plugin_mnet extends auth_plugin_base {
                           join("\n", $mnet_request->error));
                 break;
             }
-
-            $query = "SELECT
-                          l.id as remoteid,
-                          l.time,
-                          l.userid,
-                          l.ip,
-                          l.course,
-                          l.module,
-                          l.cmid,
-                          l.action,
-                          l.url,
-                          l.info,
-                          c.fullname as coursename,
-                          c.modinfo as modinfo,
-                          u.username
-                      FROM
-                          {user} u,
-                          {log} l,
-                          {course} c
-                      WHERE
-                          l.userid = u.id AND
-                          u.mnethostid = ? AND
-                          l.id > ? AND
-                          c.id = l.course
-                      ORDER BY
-                          remoteid ASC";
+            $query = "
+            SELECT
+                mhostlogs.remoteid, mhostlogs.time, mhostlogs.userid, mhostlogs.ip,
+                mhostlogs.course, mhostlogs.module, mhostlogs.cmid, mhostlogs.action,
+                mhostlogs.url, mhostlogs.info, mhostlogs.username, c.fullname as coursename,
+                c.modinfo
+            FROM
+                (
+                    SELECT
+                        l.id as remoteid, l.time, l.userid, l.ip, l.course, l.module, l.cmid,
+                        l.action, l.url, l.info, u.username
+                    FROM
+                        {user} u
+                        INNER JOIN {log} l on l.userid = u.id
+                    WHERE
+                        u.mnethostid = ?
+                        AND l.id > ?
+                    ORDER BY remoteid ASC
+                    LIMIT 500
+                ) mhostlogs
+                INNER JOIN {course} c on c.id = mhostlogs.course
+            ORDER by mhostlogs.remoteid ASC";
 
             $results = $DB->get_records_sql($query, array($mnethostid, $mnet_request->response['last log id']));