From: mjollnir_ Date: Wed, 17 Nov 2004 07:09:08 +0000 (+0000) Subject: Merge from MOODLE_14_STABLE: Indexes on faux foreign keys and often used fields,... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=17f3e7d05b732d8a2c855d0c27273981a56674a7;p=moodle.git Merge from MOODLE_14_STABLE: Indexes on faux foreign keys and often used fields, one more set and version bump to come. --- diff --git a/lib/db/mysql.php b/lib/db/mysql.php index bf77ddd39f..ebcac41ba2 100644 --- a/lib/db/mysql.php +++ b/lib/db/mysql.php @@ -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; } diff --git a/lib/db/mysql.sql b/lib/db/mysql.sql index eaf39b5448..340c8b793c 100644 --- a/lib/db/mysql.sql +++ b/lib/db/mysql.sql @@ -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)'); diff --git a/lib/db/postgres7.php b/lib/db/postgres7.php index ca6dc516ca..cdd3f6726d 100644 --- a/lib/db/postgres7.php +++ b/lib/db/postgres7.php @@ -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; } ?> diff --git a/lib/db/postgres7.sql b/lib/db/postgres7.sql index 8d3479ab42..78fdde1f95 100644 --- a/lib/db/postgres7.sql +++ b/lib/db/postgres7.sql @@ -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,