Index: modules/system/system.install =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.install,v retrieving revision 1.69.2.4 diff -u -r1.69.2.4 system.install --- modules/system/system.install 19 Jul 2007 05:39:25 -0000 1.69.2.4 +++ modules/system/system.install 11 Sep 2007 00:02:13 -0000 @@ -302,14 +302,16 @@ db_query("CREATE TABLE {flood} ( event varchar(64) NOT NULL default '', hostname varchar(128) NOT NULL default '', - timestamp int NOT NULL default '0' + timestamp int NOT NULL default '0', + INDEX (timestamp) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); db_query("CREATE TABLE {history} ( uid int NOT NULL default '0', nid int NOT NULL default '0', timestamp int NOT NULL default '0', - PRIMARY KEY (uid,nid) + PRIMARY KEY (uid,nid), + INDEX (timestamp) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); db_query("CREATE TABLE {menu} ( @@ -577,7 +579,8 @@ hostname varchar(128) NOT NULL default '', timestamp int NOT NULL default '0', PRIMARY KEY (wid), - KEY (type) + KEY (type), + INDEX (timestamp) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ "); break; @@ -769,6 +772,7 @@ hostname varchar(128) NOT NULL default '', timestamp int NOT NULL default '0' )"); + db_query("CREATE INDEX {flood}_timestamp_idx ON {flood} (timestamp)"); db_query("CREATE TABLE {history} ( uid int NOT NULL default '0', @@ -776,6 +780,7 @@ timestamp int NOT NULL default '0', PRIMARY KEY (uid,nid) )"); + db_query("CREATE INDEX {history}_timestamp_idx ON {history} (timestamp)"); db_query("CREATE TABLE {menu} ( mid serial CHECK (mid >= 0), @@ -1045,6 +1050,7 @@ PRIMARY KEY (wid) )"); db_query("CREATE INDEX {watchdog}_type_idx ON {watchdog} (type)"); + db_query("CREATE INDEX {watchdog}_timestamp_idx ON {watchdog} (timestamp)"); break; } @@ -3513,6 +3519,26 @@ } /** + * Add indexes on timestamp columns that are deleting with full table scans. + */ +function system_update_1023() { + $ret = array(); + switch ($GLOBALS['db_type']) { + case 'mysql': + case 'mysqli': + $ret[] = update_sql('ALTER TABLE {flood} ADD INDEX (timestamp)'); + $ret[] = update_sql('ALTER TABLE {history} ADD INDEX (timestamp)'); + $ret[] = update_sql('ALTER TABLE {watchdog} ADD INDEX (timestamp)'); + break; + case 'pgsql': + $ret[] = update_sql('CREATE INDEX {flood}_timestamp_idx ON {flood} (timestamp)'); + $ret[] = update_sql('CREATE INDEX {history}_timestamp_idx ON {history} (timestamp)'); + $ret[] = update_sql('CREATE INDEX {watchdog}_timestamp_idx ON {watchdog} (timestamp)'); + break; + } + return $ret; +} +/** * @} End of "defgroup updates-5.x-extra" */