X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2Frebuildlinks.inc;h=1d384691c69ed1fb2eba986c22551a75db509a7c;hb=c6f0f3f783b4742f0363b1b64a3f116a8da39a14;hp=1150cd96793aeb48cb6ac70ec26439d9b6e9f169;hpb=78b64aa9dcd6ffb89d50ad60dd0ca2ca8076c5a3;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/rebuildlinks.inc b/maintenance/rebuildlinks.inc index 1150cd9679..1d384691c6 100644 --- a/maintenance/rebuildlinks.inc +++ b/maintenance/rebuildlinks.inc @@ -27,11 +27,18 @@ function rebuildLinkTables() print "Setting AUTOCOMMIT=1\n"; wfQuery("SET SESSION AUTOCOMMIT=1", DB_WRITE); + print "Extracting often used data from cur (may take a few minutes)\n"; + $sql = "CREATE TEMPORARY TABLE cur_fast SELECT cur_namespace, cur_title, cur_id FROM cur"; + wfQuery( $sql, DB_WRITE ); + $sql = "ALTER TABLE cur_fast ADD INDEX(cur_namespace, cur_title)"; + wfQuery( $sql, DB_WRITE ); + print "Locking tables\n"; - $sql = "LOCK TABLES cur READ, interwiki READ, user_newtalk READ, " . + $sql = "LOCK TABLES cur READ, cur_fast READ, interwiki READ, user_newtalk READ, " . "links WRITE, brokenlinks WRITE, imagelinks WRITE"; wfQuery( $sql, DB_WRITE ); + print "Deleting old data in links table.\n"; $sql = "DELETE FROM links"; wfQuery( $sql, DB_WRITE ); @@ -158,7 +165,8 @@ function rebuildLinkTables() $parts[] = " (cur_namespace = " . $nt->getNamespace() . " AND " . "cur_title='" . wfStrencode( $nt->getDBkey() ) . "')"; } - $sql = "SELECT cur_namespace, cur_title, cur_id FROM cur WHERE " . implode(" OR ", $parts); + $sql = "SELECT cur_namespace, cur_title, cur_id FROM cur_fast WHERE " . + implode(" OR ", $parts); $res = wfQuery( $sql, DB_WRITE ); while($row = wfFetchObject( $res ) ){ $pos = $titles_needing_curdata_pos[$row->cur_title . $row->cur_namespace];