From 3a5476d150419b46847dd922935f368c969519c1 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Wed, 23 Feb 2011 03:13:02 -0500 Subject: [PATCH] - Add index on contactgroupmembers.contact_id column. Improves performance and fixes problem with contactgroupmembers table creation on MySQL 4.x --- SQL/sqlite.update.sql | 86 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 83 insertions(+), 3 deletions(-) diff --git a/SQL/sqlite.update.sql b/SQL/sqlite.update.sql index 0f7f994..7b5464c 100644 --- a/SQL/sqlite.update.sql +++ b/SQL/sqlite.update.sql @@ -1,4 +1,4 @@ --- RoundCube Webmail update script for SQLite databases +-- Roundcube Webmail update script for SQLite databases -- Updates from version 0.1-stable to 0.1.1 DROP TABLE messages; @@ -121,8 +121,6 @@ INSERT INTO tmp_users (user_id, username, mail_host, alias, created, last_login, language, preferences) SELECT user_id, username, mail_host, alias, created, last_login, language, preferences FROM users; -DROP INDEX ix_users_username ON users(username); -DROP INDEX ix_users_alias ON users(alias); DROP TABLE users; CREATE TABLE users ( @@ -142,3 +140,85 @@ CREATE INDEX ix_users_username ON users(username); CREATE INDEX ix_users_alias ON users(alias); DROP TABLE tmp_users; + +-- Updates from version 0.4.2 + +DROP INDEX ix_users_username; +CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host); + +CREATE TABLE contacts_tmp ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '' +); + +INSERT INTO contacts_tmp (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts; + +DROP TABLE contacts; +CREATE TABLE contacts ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '' +); + +INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts_tmp; + +CREATE INDEX ix_contacts_user_id ON contacts(user_id, email); +DROP TABLE contacts_tmp; + +DELETE FROM messages; + + +-- Updates from version 0.5.x + +CREATE TABLE contacts_tmp ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '' +); + +INSERT INTO contacts_tmp (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts; + +DROP TABLE contacts; +CREATE TABLE contacts ( + contact_id integer NOT NULL PRIMARY KEY, + user_id integer NOT NULL default '0', + changed datetime NOT NULL default '0000-00-00 00:00:00', + del tinyint NOT NULL default '0', + name varchar(128) NOT NULL default '', + email varchar(255) NOT NULL default '', + firstname varchar(128) NOT NULL default '', + surname varchar(128) NOT NULL default '', + vcard text NOT NULL default '', + words text NOT NULL default '' +); + +INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname, surname, vcard) + SELECT contact_id, user_id, changed, del, name, email, firstname, surname, vcard FROM contacts_tmp; + +CREATE INDEX ix_contacts_user_id ON contacts(user_id, email); +DROP TABLE contacts_tmp; + +DELETE FROM messages; +CREATE INDEX ix_contactgroupmembers_contact_id ON contactgroupmembers (contact_id); -- Gitblit v1.9.1