]> git.mjollnir.org Git - moodle.git/commitdiff
Merge from MOODLE_14_STABLE: Indexes on faux foreign keys and often used fields,...
authormjollnir_ <mjollnir_>
Wed, 17 Nov 2004 07:09:08 +0000 (07:09 +0000)
committermjollnir_ <mjollnir_>
Wed, 17 Nov 2004 07:09:08 +0000 (07:09 +0000)
lib/db/mysql.php
lib/db/mysql.sql
lib/db/postgres7.php
lib/db/postgres7.sql

index bf77ddd39f37027cd3bca288530df65314806a6e..ebcac41ba2b9061bd2228a2499f7c27d0b6e38e9 100644 (file)
@@ -859,6 +859,9 @@ function main_upgrade($oldversion=0) {
 
     if ($oldversion < 2004091900) { // modify idnumber to hold longer values
         table_column('user', 'idnumber', 'idnumber', 'varchar', '64', '', '', '', '');
+        execute_sql("ALTER TABLE {$CFG->prefix}user DROP INDEX user_idnumber",false); // added in case of conflicts with upgrade from 14stable
+        execute_sql("ALTER TABLE {$CFG->prefix}user DROP INDEX user_auth",false); // added in case of conflicts with upgrade from 14stable
+
         execute_sql("ALTER TABLE {$CFG->prefix}user ADD INDEX idnumber (idnumber)");
         execute_sql("ALTER TABLE {$CFG->prefix}user ADD INDEX auth (auth)");
     }
@@ -879,6 +882,64 @@ function main_upgrade($oldversion=0) {
         execute_sql("UPDATE {$CFG->prefix}course SET lang = 'mi_nt' WHERE lang = 'ma_nt'");
     }
 
+    if ($oldversion < 2004111700) { // add indexes. - drop them first silently to avoid conflicts when upgrading.
+        execute_sql(" ALTER TABLE `{$CFG->prefix}course` DROP INDEX idnumber;",false);
+        execute_sql(" ALTER TABLE `{$CFG->prefix}course` DROP INDEX shortname;",false);
+        execute_sql(" ALTER TABLE `{$CFG->prefix}user_students` DROP INDEX userid;",false);
+        execute_sql(" ALTER TABLE `{$CFG->prefix}user_teachers` DROP INDEX userid;",false);
+
+        execute_sql(" ALTER TABLE `{$CFG->prefix}course` ADD INDEX idnumber (idnumber);");
+        execute_sql(" ALTER TABLE `{$CFG->prefix}course` ADD INDEX shortname (shortname);");
+        execute_sql(" ALTER TABLE `{$CFG->prefix}user_students` ADD INDEX userid (userid);");
+        execute_sql(" ALTER TABLE `{$CFG->prefix}user_teachers` ADD INDEX userid (userid);");
+    }
+
+    if ($oldversion < 2004111700) {// add an index to event for timestart and timeduration. - drop them first silently to avoid conflicts when upgrading.
+        execute_sql('ALTER TABLE prefix_event DROP INDEX timestart;',false);
+        execute_sql('ALTER TABLE prefix_event DROP INDEX timeduration;',false); 
+
+        modify_database('','ALTER TABLE prefix_event ADD INDEX timestart (timestart);');
+        modify_database('','ALTER TABLE prefix_event ADD INDEX timeduration (timeduration);');
+    }
+
+    if ($oldversion < 2004111700) { //add indexes on modules and course_modules. - drop them first silently to avoid conflicts when upgrading.
+        execute_sql('ALTER TABLE prefix_course_modules drop key visible;',false);
+        execute_sql('ALTER TABLE prefix_course_modules drop key course;',false);
+        execute_sql('ALTER TABLE prefix_course_modules drop key module;',false);
+        execute_sql('ALTER TABLE prefix_course_modules drop key instance;',false);
+        execute_sql('ALTER TABLE prefix_course_modules drop key deleted;',false);
+        execute_sql('ALTER TABLE prefix_modules drop key name;',false);
+
+        modify_database('','ALTER TABLE prefix_course_modules add key visible(visible);');
+        modify_database('','ALTER TABLE prefix_course_modules add key course(course);');
+        modify_database('','ALTER TABLE prefix_course_modules add key module(module);');
+        modify_database('','ALTER TABLE prefix_course_modules add key instance (instance);');
+        modify_database('','ALTER TABLE prefix_course_modules add key deleted (deleted);');
+        modify_database('','ALTER TABLE prefix_modules add key name(name);');
+    }
+
+    if ($oldversion < 2004111700) { // add an index on the groups_members table. - drop them first silently to avoid conflicts when upgrading.
+        execute_sql('ALTER TABLE prefix_groups_members DROP INDEX userid;',false);
+
+        modify_database('','ALTER TABLE prefix_groups_members ADD INDEX userid (userid);');
+    }
+
+    if ($oldversion < 2004111700) { // add an index on user students timeaccess (used for sorting)- drop them first silently to avoid conflicts when upgrading
+        execute_sql('ALTER TABLE prefix_user_students DROP INDEX timeaccess;',false);
+
+        modify_database('','ALTER TABLE prefix_user_students ADD INDEX timeaccess (timeaccess);');
+    }
+
+    if ($oldversion < 2004111700) {  // add indexes on faux-foreign keys. - drop them first silently to avoid conflicts when upgrading.
+        execute_sql('ALTER TABLE prefix_scale DROP INDEX courseid;',false);
+        execute_sql('ALTER TABLE prefix_user_admins DROP INDEX userid;',false);
+        execute_sql('ALTER TABLE prefix_user_coursecreators DROP INDEX userid;',false);
+
+        modify_database('','ALTER TABLE prefix_scale ADD INDEX courseid (courseid);');
+        modify_database('','ALTER TABLE prefix_user_admins ADD INDEX userid (userid);');
+        modify_database('','ALTER TABLE prefix_user_coursecreators ADD INDEX userid (userid);');
+    }
+    
     return $result;
 
 }
index eaf39b544883c829d7ea3dd5dc62f4c564f96165..340c8b793c78de75122e1e7a4dd94ef1469fae8e 100644 (file)
@@ -60,7 +60,9 @@ CREATE TABLE `prefix_course` (
   `timecreated` int(10) unsigned NOT NULL default '0',
   `timemodified` int(10) unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
-  KEY `category` (`category`)
+  KEY `category` (`category`),
+  KEY `idnumber` (`idnumber`),
+  KEY `shortname` (`shortname`)         
 ) TYPE=MyISAM;
 # --------------------------------------------------------
 
@@ -116,7 +118,12 @@ CREATE TABLE `prefix_course_modules` (
   `visible` tinyint(1) NOT NULL default '1',
   `groupmode` tinyint(4) NOT NULL default '0',
   PRIMARY KEY  (`id`),
-  UNIQUE KEY `id` (`id`)
+  UNIQUE KEY `id` (`id`),
+  KEY `visible` (`visible`),
+  KEY `course` (`course`),
+  KEY `module` (`module`),
+  KEY `instance` (`instance`),
+  KEY `deleted` (`deleted`)
 ) TYPE=MyISAM;
 # --------------------------------------------------------
 
@@ -158,7 +165,9 @@ CREATE TABLE `prefix_event` (
   PRIMARY KEY  (`id`),
   UNIQUE KEY `id` (`id`),
   KEY `courseid` (`courseid`),
-  KEY `userid` (`userid`)
+  KEY `userid` (`userid`),
+  KEY `timestart` (`timestart`),
+  KEY `timeduration` (`timeduration`)
 ) TYPE=MyISAM COMMENT='For everything with a time associated to it';
 # --------------------------------------------------------
 
@@ -226,7 +235,8 @@ CREATE TABLE `prefix_groups_members` (
   `timeadded` int(10) unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `id` (`id`),
-  KEY `groupid` (`groupid`)
+  KEY `groupid` (`groupid`),
+  KEY `userid` (`userid`)
 ) TYPE=MyISAM COMMENT='Lists memberships of users to groups';
 # --------------------------------------------------------
 
@@ -278,7 +288,8 @@ CREATE TABLE `prefix_modules` (
   `search` varchar(255) NOT NULL default '',
   `visible` tinyint(1) NOT NULL default '1',
   PRIMARY KEY  (`id`),
-  UNIQUE KEY `id` (`id`)
+  UNIQUE KEY `id` (`id`),
+  KEY `name` (`name`)
 ) TYPE=MyISAM;
 # --------------------------------------------------------
 
@@ -295,7 +306,8 @@ CREATE TABLE `prefix_scale` (
   `scale` text NOT NULL,
   `description` text NOT NULL,
   `timemodified` int(10) unsigned NOT NULL default '0',
-  PRIMARY KEY  (id)
+  PRIMARY KEY  (id),
+  KEY `courseid` (`courseid`)
 ) TYPE=MyISAM COMMENT='Defines grading scales';
 # --------------------------------------------------------
 
@@ -372,7 +384,8 @@ CREATE TABLE `prefix_user_admins` (
   `id` int(10) unsigned NOT NULL auto_increment,
   `userid` int(10) unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
-  UNIQUE KEY `id` (`id`)
+  UNIQUE KEY `id` (`id`),
+  KEY `userid` (`userid`)
 ) TYPE=MyISAM COMMENT='One record per administrator user';
 # --------------------------------------------------------
 
@@ -409,7 +422,9 @@ CREATE TABLE `prefix_user_students` (
   `timeaccess` int(10) unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `id` (`id`),
-  KEY `courseuserid` (course,userid)
+  KEY `courseuserid` (course,userid),
+  KEY `userid` (userid),
+  KEY `timeaccess` (timeaccess)
 ) TYPE=MyISAM;
 # --------------------------------------------------------
 
@@ -430,7 +445,8 @@ CREATE TABLE `prefix_user_teachers` (
   `timeaccess` int(10) unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `id` (`id`),
-  KEY `courseuserid` (course,userid)
+  KEY `courseuserid` (course,userid),
+  KEY `userid` (userid)
 ) TYPE=MyISAM COMMENT='One record per teacher per course';
 
 #
@@ -441,7 +457,8 @@ CREATE TABLE `prefix_user_coursecreators` (
   `id` int(10) unsigned NOT NULL auto_increment,
   `userid` int(10) unsigned NOT NULL default '0',
   PRIMARY KEY  (`id`),
-  UNIQUE KEY `id` (`id`)
+  UNIQUE KEY `id` (`id`),
+  KEY `userid` (`userid`)
 ) TYPE=MyISAM COMMENT='One record per course creator';
 
 INSERT INTO prefix_log_display VALUES ('user', 'view', 'user', 'CONCAT(firstname," ",lastname)');
index ca6dc516ca4a4da6a557d93c2a6ed695bdaa3096..cdd3f6726df4f8c8f53ef43e7458ac33c6a716b2 100644 (file)
@@ -594,6 +594,8 @@ function main_upgrade($oldversion=0) {
     if ($oldversion < 2004091900) {  //Modify idnumber to hold longer keys 
         set_field('user', 'auth', 'manual', 'username', 'guest');
         table_column('user', 'idnumber', 'idnumber', 'varchar', '64', '', '', '', '');
+        execute_sql("DROP INDEX {$CFG->prefix}user_idnumber_idx ;",false);// added in case of conflicts with upgrade from 14stable
+        execute_sql("DROP INDEX {$CFG->prefix}user_auth_idx ;",false);// added in case of conflicts with upgrade from 14stable
         execute_sql("CREATE INDEX {$CFG->prefix}user_idnumber_idx ON {$CFG->prefix}user (idnumber)"); 
         execute_sql("CREATE INDEX {$CFG->prefix}user_auth_idx ON {$CFG->prefix}user (auth)"); 
     }
@@ -617,9 +619,69 @@ function main_upgrade($oldversion=0) {
         execute_sql("UPDATE {$CFG->prefix}user SET lang = 'mi_nt' WHERE lang = 'ma_nt'");
         execute_sql("UPDATE {$CFG->prefix}course SET lang = 'mi_nt' WHERE lang = 'ma_nt'");
     }
+
+    if ($oldversion < 2004111700) { // add indexes- drop them first silently to avoid conflicts when upgrading.
+        execute_sql("DROP INDEX {$CFG->prefix}course_idnumber_idx;",false);
+        execute_sql("DROP INDEX {$CFG->prefix}course_shortname_idx;",false);
+        execute_sql("DROP INDEX {$CFG->prefix}user_students_userid_idx;",false);
+        execute_sql("DROP INDEX {$CFG->prefix}user_teachers_userid_idx;",false);
+
+        modify_database("","CREATE INDEX {$CFG->prefix}course_idnumber_idx ON {$CFG->prefix}course (idnumber);" );
+        modify_database("","CREATE INDEX {$CFG->prefix}course_shortname_idx ON {$CFG->prefix}course (shortname);" );
+        modify_database("","CREATE INDEX {$CFG->prefix}user_students_userid_idx ON {$CFG->prefix}user_students (userid);");
+        modify_database("","CREATE INDEX {$CFG->prefix}user_teachers_userid_idx ON {$CFG->prefix}user_teachers (userid);");
+    }
+    if ($oldversion < 2004111700) { // add an index to event for timestart and timeduration- drop them first silently to avoid conflicts when upgrading.
+        execute_sql('DROP INDEX prefix_event_timestart_idx;',false);
+        execute_sql('DROP INDEX prefix_event_timeduration_idx;',false);
+
+        modify_database('','CREATE INDEX prefix_event_timestart_idx ON prefix_event (timestart);');
+        modify_database('','CREATE INDEX prefix_event_timeduration_idx ON prefix_event (timeduration);');
+    }
+
+    if ($oldversion < 2004117000) { // add an index on the groups_members table- drop them first silently to avoid conflicts when upgrading.
+        execute_sql('CREATE INDEX prefix_groups_members_userid_idx;',false);
+
+        modify_database('','CREATE INDEX prefix_groups_members_userid_idx ON prefix_groups_members (userid);');
+    }
     
-    return $result;
+    if ($oldversion < 2004111700) { //add indexes on modules and course_modules- drop them first silently to avoid conflicts when upgrading.
+        execute_sql('DROP INDEX prefix_course_modules_visible_idx;',false);
+        execute_sql('DROP INDEX prefix_course_modules_course_idx;',false); 
+        execute_sql('DROP INDEX prefix_course_modules_module_idx;',false); 
+        execute_sql('DROP INDEX prefix_course_modules_instance_idx;',false);
+        execute_sql('DROP INDEX prefix_course_modules_deleted_idx;',false);
+        execute_sql('DROP INDEX prefix_modules_name_idx;',false);
+
+        modify_database('','CREATE INDEX prefix_course_modules_visible_idx ON prefix_course_modules (visible);');
+        modify_database('','CREATE INDEX prefix_course_modules_course_idx ON prefix_course_modules (course);');
+        modify_database('','CREATE INDEX prefix_course_modules_module_idx ON prefix_course_modules (module);');
+        modify_database('','CREATE INDEX prefix_course_modules_instance_idx ON prefix_course_modules (instance);');
+        modify_database('','CREATE INDEX prefix_course_modules_deleted_idx ON prefix_course_modules (deleted);');
+        modify_database('','CREATE INDEX prefix_modules_name_idx ON prefix_modules (name);');
+    }
+    
+    if ($oldversion < 2004111700) { // add an index on user students timeaccess (used for sorting)- drop them first silently to avoid conflicts when upgrading
+        execute_sql('DROP INDEX prefix_user_students_timeaccess_idx;',false);
+
+        modify_database('','CREATE INDEX prefix_user_students_timeaccess_idx ON prefix_user_students (timeaccess);');
+    }
+    
+    if ($oldversion < 2004111700) { //add indexes on faux foreign keys  - drop them first silently to avoid conflicts when upgrading.
+        execute_sql('DROP INDEX prefix_course_sections_coursesection_idx;',false);
+        execute_sql('DROP INDEX prefix_scale_courseid_idx;',false); 
+        execute_sql('DROP INDEX prefix_user_admins_userid_idx;',false);
+        execute_sql('DROP INDEX prefix_user_coursecreators_userid_idx;',false); 
+
+        modify_database('','CREATE INDEX prefix_course_sections_coursesection_idx ON prefix_course_sections (course,section);');
+        modify_database('','CREATE INDEX prefix_scale_courseid_idx ON prefix_scale (courseid);');
+        modify_database('','CREATE INDEX prefix_user_admins_userid_idx ON prefix_user_admins (userid);');
+        modify_database('','CREATE INDEX prefix_user_coursecreators_userid_idx ON prefix_user_coursecreators (userid);');
+    }
+   
 
+    return $result;
 }
 
 ?>
index 8d3479ab425e4b6e0b4c414133cedce2e4873f6a..78fdde1f95f8e738066649aade3932e91843d17d 100644 (file)
@@ -40,6 +40,8 @@ CREATE TABLE prefix_course (
 );
 
 CREATE INDEX prefix_course_category_idx ON prefix_course (category);
+CREATE INDEX prefix_course_idnumber_idx ON prefix_course (idnumber);
+CREATE INDEX prefix_course_shortname_idx ON prefix_course (shortname);
 
 CREATE TABLE prefix_course_categories (
    id SERIAL PRIMARY KEY,
@@ -75,6 +77,12 @@ CREATE TABLE prefix_course_modules (
    groupmode integer NOT NULL default '0'
 );
 
+CREATE INDEX prefix_course_modules_visible_idx ON prefix_course_modules (visible);
+CREATE INDEX prefix_course_modules_course_idx ON prefix_course_modules (course);
+CREATE INDEX prefix_course_modules_module_idx ON prefix_course_modules (module);
+CREATE INDEX prefix_course_modules_instance_idx ON prefix_course_modules (instance);
+CREATE INDEX prefix_course_modules_deleted_idx ON prefix_course_modules (deleted);
+
 CREATE TABLE prefix_course_sections (
    id SERIAL PRIMARY KEY,
    course integer NOT NULL default '0',
@@ -84,6 +92,8 @@ CREATE TABLE prefix_course_sections (
    visible integer NOT NULL default '1'
 );
 
+CREATE INDEX prefix_course_sections_coursesection_idx ON prefix_course_sections (course,section);
+
 CREATE TABLE prefix_event (
    id SERIAL PRIMARY KEY,
    name varchar(255) NOT NULL default '',
@@ -103,6 +113,8 @@ CREATE TABLE prefix_event (
 
 CREATE INDEX prefix_event_courseid_idx ON prefix_event (courseid);
 CREATE INDEX prefix_event_userid_idx ON prefix_event (userid);
+CREATE INDEX prefix_event_timestart_idx ON prefix_event (timestart);
+CREATE INDEX prefix_event_timeduration_idx ON prefix_event (timeduration)
 
 CREATE TABLE prefix_groups (
    id SERIAL PRIMARY KEY,
@@ -126,6 +138,7 @@ CREATE TABLE prefix_groups_members (
 );
 
 CREATE INDEX prefix_groups_members_idx ON prefix_groups_members (groupid);
+CREATE INDEX prefix_groups_members_userid_idx ON prefix_groups_members (userid);
 
 CREATE TABLE prefix_log (
    id SERIAL PRIMARY KEY,
@@ -161,6 +174,8 @@ CREATE TABLE prefix_modules (
    visible integer NOT NULL default '1'
 );
 
+CREATE INDEX prefix_modules_name_idx ON prefix_modules (name);
+
 CREATE TABLE prefix_scale (
    id SERIAL PRIMARY KEY,
    courseid integer NOT NULL default '0',
@@ -191,6 +206,8 @@ CREATE TABLE prefix_cache_filters (
 
 CREATE INDEX prefix_cache_filters_filtermd5key_idx ON prefix_cache_filters (filter,md5key);
 
+CREATE INDEX prefix_scale_courseid_idx ON prefix_scale (courseid);
+
 
 CREATE TABLE prefix_cache_text (
    id SERIAL PRIMARY KEY,
@@ -250,6 +267,8 @@ CREATE TABLE prefix_user_admins (
    userid integer NOT NULL default '0'
 );
 
+CREATE INDEX prefix_user_admins_userid_idx ON prefix_user_admins (userid);
+
 CREATE TABLE prefix_user_preferences (
    id SERIAL PRIMARY KEY,
    userid integer NOT NULL default '0',
@@ -270,6 +289,7 @@ CREATE TABLE prefix_user_students (
 );
 
 CREATE INDEX prefix_user_students_courseuserid_idx ON prefix_user_students (course,userid);
+CREATE INDEX prefix_user_students_userid_idx ON prefix_user_students (userid);
 
 CREATE TABLE prefix_user_teachers (
    id SERIAL PRIMARY KEY,
@@ -285,6 +305,7 @@ CREATE TABLE prefix_user_teachers (
 );
 
 CREATE INDEX prefix_user_teachers_courseuserid_idx ON prefix_user_teachers (course,userid);
+CREATE INDEX prefix_user_teachers_userid_idx ON prefix_user_teachers (userid);
 
 CREATE TABLE prefix_user_coursecreators (
    id SERIAL8 PRIMARY KEY,