From 42031d5565102ae3eb69fea22eb71fe5c1ce1e78 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 9 Jul 2007 19:39:18 +0000 Subject: [PATCH] *Index image and oldimage tables by user/timestamp (this should help slow renameuser queries on commons at the least) --- .../archives/patch-image-user-index.sql | 8 ++++++ .../archives/patch-oldimage-user-index.sql | 8 ++++++ maintenance/tables.sql | 3 ++- maintenance/updaters.inc | 26 +++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 maintenance/archives/patch-image-user-index.sql create mode 100644 maintenance/archives/patch-oldimage-user-index.sql diff --git a/maintenance/archives/patch-image-user-index.sql b/maintenance/archives/patch-image-user-index.sql new file mode 100644 index 0000000000..2205d21ba7 --- /dev/null +++ b/maintenance/archives/patch-image-user-index.sql @@ -0,0 +1,8 @@ +-- +-- image-user-index.sql +-- +-- Add user/timestamp index to current image versions +-- + +ALTER TABLE /*$wgDBprefix*/image + ADD INDEX img_usertext_timestamp (img_user_text,img_timestamp); diff --git a/maintenance/archives/patch-oldimage-user-index.sql b/maintenance/archives/patch-oldimage-user-index.sql new file mode 100644 index 0000000000..b0ba3ea762 --- /dev/null +++ b/maintenance/archives/patch-oldimage-user-index.sql @@ -0,0 +1,8 @@ +-- +-- oldimage-user-index.sql +-- +-- Add user/timestamp index to old image versions +-- + +ALTER TABLE /*$wgDBprefix*/oldimage + ADD INDEX oi_usertext_timestamp (oi_user_text,oi_timestamp); diff --git a/maintenance/tables.sql b/maintenance/tables.sql index c9f52eabbc..ed7ecd3668 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -687,9 +687,9 @@ CREATE TABLE /*$wgDBprefix*/image ( PRIMARY KEY img_name (img_name), + INDEX img_usertext_timestamp (img_user_text,img_timestamp), -- Used by Special:Imagelist for sort-by-size INDEX img_size (img_size), - -- Used by Special:Newimages and Special:Imagelist INDEX img_timestamp (img_timestamp) @@ -724,6 +724,7 @@ CREATE TABLE /*$wgDBprefix*/oldimage ( oi_minor_mime varbinary(32) NOT NULL default "unknown", oi_deleted tinyint unsigned NOT NULL default '0', + INDEX oi_usertext_timestamp (oi_user_text,oi_timestamp), INDEX oi_name_timestamp (oi_name,oi_timestamp), -- oi_archive_name truncated to 14 to avoid key length overflow INDEX oi_name_archive_name (oi_name,oi_archive_name(14)) diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index 585679f37a..8a7c02eeb1 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -263,6 +263,28 @@ function do_archive_user_index() { } } +function do_image_user_index() { + global $wgDatabase; + if( $wgDatabase->indexExists( 'image', 'img_usertext_timestamp' ) ) { + echo "...usertext,timestamp key on image already exists.\n"; + } else { + echo "Adding usertext,timestamp key on image table... "; + dbsource( archive("patch-image-user-index.sql"), $wgDatabase ); + echo "ok\n"; + } +} + +function do_oldimage_user_index() { + global $wgDatabase; + if( $wgDatabase->indexExists( 'oldimage', 'oi_usertext_timestamp' ) ) { + echo "...usertext,timestamp key on oldimage already exists.\n"; + } else { + echo "Adding usertext,timestamp key on oldimage table... "; + dbsource( archive("patch-oldimage-user-index.sql"), $wgDatabase ); + echo "ok\n"; + } +} + function do_watchlist_update() { global $wgDatabase; $fname = 'do_watchlist_update'; @@ -1008,6 +1030,10 @@ function do_all_updates( $shared = false, $purge = true ) { do_restrictions_update(); flush (); do_archive_user_index(); flush (); + + do_image_user_index(); flush (); + + do_oldimage_user_index(); flush (); echo "Deleting old default messages (this may take a long time!)..."; flush(); deleteDefaultMessages(); -- 2.20.1