From 3ebf865805d7c69b95df470599acbf2b7b4be435 Mon Sep 17 00:00:00 2001 From: mjollnir_ Date: Wed, 17 Nov 2004 07:42:36 +0000 Subject: [PATCH] Add a unique key to guarantee that course,sortorder is unique. Allows fix_course_sortorder and ordering operations to be much faster. (martinlanghoff) arch-eduforge@catalyst.net.nz--2004/moodle--eduforge--1.3.3--patch-231 arch-eduforge@catalyst.net.nz--2004/moodle--eduforge--1.3.3--patch-236 --- lib/db/mysql.php | 19 ++++++++++++++++++- lib/db/mysql.sql | 12 ++++++++++-- lib/db/postgres7.php | 17 +++++++++++++++++ lib/db/postgres7.sql | 10 +++++++++- 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/lib/db/mysql.php b/lib/db/mysql.php index 48d9e77e905..121e71b1406 100644 --- a/lib/db/mysql.php +++ b/lib/db/mysql.php @@ -883,9 +883,26 @@ function main_upgrade($oldversion=0) { modify_database('','ALTER TABLE prefix_user_admins ADD INDEX userid (userid);'); modify_database('','ALTER TABLE prefix_user_coursecreators ADD INDEX userid (userid);'); } + + if ($oldversion < 2004083128) { // replace index on course + fix_course_sortorder(0,0,1); + modify_database('', "ALTER TABLE `prefix_course` DROP KEY category"); + modify_database('', "ALTER TABLE `prefix_course` ADD UNIQUE KEY category_sortorder(category,sortorder)"); + modify_database("", "ALTER TABLE `prefix_user` ADD INDEX prefix_user_deleted_idx (deleted)"); + modify_database("", "ALTER TABLE `prefix_user` ADD INDEX prefix_user_confirmed_idx (confirmed)"); + modify_database("", "ALTER TABLE `prefix_user` ADD INDEX prefix_user_firstname_idx (firstname)"); + modify_database("", "ALTER TABLE `prefix_user` ADD INDEX prefix_user_lastname_idx (lastname)"); + modify_database("", "ALTER TABLE `prefix_user` ADD INDEX prefix_user_city_idx (city)"); + modify_database("", "ALTER TABLE `prefix_user` ADD INDEX prefix_user_country_idx (country)"); + modify_database("", "ALTER TABLE `prefix_user` ADD INDEX prefix_user_lastaccess_idx (lastaccess)"); + } + + if ($oldversion < 2004083128) { // one more index for email (for sorting) + modify_database('','ALTER TABLE `prefix_user` ADD INDEX prefix_user_email_idx (email);'); + } return $result; - + } ?> diff --git a/lib/db/mysql.sql b/lib/db/mysql.sql index 9b72e403c82..14738049314 100644 --- a/lib/db/mysql.sql +++ b/lib/db/mysql.sql @@ -61,7 +61,7 @@ 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`), + UNIQUE KEY `category_sortorder` (`category`, `sortorder`), KEY `idnumber` (`idnumber`), KEY `shortname` (`shortname`) ) TYPE=MyISAM; @@ -358,7 +358,15 @@ CREATE TABLE `prefix_user` ( UNIQUE KEY `id` (`id`), UNIQUE KEY `username` (`username`), KEY `user_idnumber` (`idnumber`), - KEY `user_auth` (`auth`) + KEY `user_auth` (`auth`), + KEY `user_deleted` (`deleted`), + KEY `user_confirmed` (`confirmed`), + KEY `user_firstname` (`firstname`), + KEY `user_lastname` (`lastname`), + KEY `user_city` (`city`), + KEY `user_country` (`country`), + KEY `user_lastaccess` (`lastaccess`), + KEY `user_email` (`email`) ) TYPE=MyISAM COMMENT='One record for each person'; # -------------------------------------------------------- diff --git a/lib/db/postgres7.php b/lib/db/postgres7.php index 7714f46765e..ea5c8e67293 100644 --- a/lib/db/postgres7.php +++ b/lib/db/postgres7.php @@ -619,6 +619,23 @@ function main_upgrade($oldversion=0) { modify_database('','CREATE INDEX prefix_user_coursecreators_userid_idx ON prefix_user_coursecreators (userid);'); } + if ($oldversion < 2004083128) { // make new indexes on user table. + fix_course_sortorder(0,0,1); + modify_database('', "DROP INDEX prefix_course_category_idx;"); + modify_database('', "CREATE UNIQUE INDEX prefix_course_category_sortorder_uk ON prefix_course(category,sortorder)"); + modify_database("","CREATE INDEX prefix_user_deleted_idx ON prefix_user (deleted)"); + modify_database("","CREATE INDEX prefix_user_confirmed_idx ON prefix_user (confirmed)"); + modify_database("","CREATE INDEX prefix_user_firstname_idx ON prefix_user (firstname)"); + modify_database("","CREATE INDEX prefix_user_lastname_idx ON prefix_user (lastname)"); + modify_database("","CREATE INDEX prefix_user_city_idx ON prefix_user (city)"); + modify_database("","CREATE INDEX prefix_user_country_idx ON prefix_user (country)"); + modify_database("","CREATE INDEX prefix_user_lastaccess_idx ON prefix_user (lastaccess)"); + } + + if ($oldversion < 2004083128) { // one more index for email (for sorting) + modify_database('','CREATE INDEX prefix_user_email_idx ON prefix_user (email);'); + } + return $result; } diff --git a/lib/db/postgres7.sql b/lib/db/postgres7.sql index 531c1fa6f13..9a0348831e7 100644 --- a/lib/db/postgres7.sql +++ b/lib/db/postgres7.sql @@ -40,7 +40,7 @@ CREATE TABLE prefix_course ( timemodified integer NOT NULL default '0' ); -CREATE INDEX prefix_course_category_idx ON prefix_course (category); +CREATE INDEX prefix_course_category_sortorder_uk ON prefix_course (category,sortorder); CREATE INDEX prefix_course_idnumber_idx ON prefix_course (idnumber); CREATE INDEX prefix_course_shortname_idx ON prefix_course (shortname); @@ -254,6 +254,14 @@ CREATE TABLE prefix_user ( CREATE INDEX prefix_user_idnumber_idx ON prefix_user (idnumber); CREATE INDEX prefix_user_auth_idx ON prefix_user (auth); +CREATE INDEX prefix_user_deleted_idx ON prefix_user (deleted); +CREATE INDEX prefix_user_confirmed_idx ON prefix_user (confirmed); +CREATE INDEX prefix_user_firstname_idx ON prefix_user (firstname); +CREATE INDEX prefix_user_lastname_idx ON prefix_user (lastname); +CREATE INDEX prefix_user_city_idx ON prefix_user (city); +CREATE INDEX prefix_user_country_idx ON prefix_user (country); +CREATE INDEX prefix_user_lastaccess_idx ON prefix_user (lastaccess); +CREATE INDEX prefix_user_email_idx ON prefix_user (email); CREATE TABLE prefix_user_admins ( id SERIAL PRIMARY KEY,