btongminh(a)svn.wikimedia.org schreef:
Revision: 37050
Author: btongminh
Date: 2008-07-04 13:36:21 +0000 (Fri, 04 Jul 2008)
Log Message:
-----------
Force index; Use straight_join
Modified Paths:
--------------
trunk/extensions/GlobalUsage/GlobalUsageDaemon.php
Modified: trunk/extensions/GlobalUsage/GlobalUsageDaemon.php
===================================================================
--- trunk/extensions/GlobalUsage/GlobalUsageDaemon.php 2008-07-04 13:04:03 UTC (rev
37049)
+++ trunk/extensions/GlobalUsage/GlobalUsageDaemon.php 2008-07-04 13:36:21 UTC (rev
37050)
@@ -77,11 +77,15 @@
do {
$loopStart = microtime(true);
- $sql = 'SELECT '.
+ $sql =
+ // Join order is important for sorting
+ 'SELECT STRAIGHT_JOIN '.
'page_id, page_namespace, page_title, il_to, img_name IS NOT NULL AS is_local
'.
'FROM '.$dbr->tableName('imagelinks').' '.
+ // MySQL will choose the il_to index from il_to > 'O'
+ // TODO: Doesn't work on the Toolserver
+ 'FORCE INDEX(il_from) '.
'LEFT JOIN '.$dbr->tableName('image').' ON il_to = img_name
'.
- // Note the following JOIN should be after the LEFT JOIN
'JOIN '.$dbr->tableName('page').' ON page_id = il_from
'.
'WHERE il_from >= '.$prevPage.' AND il_to >
'.$dbr->addQuotes($prevImage).
'ORDER BY il_from, il_to ';
Holy hell... can't this extension use
the Database class to clear up
*some* of this mess? AFAIK, STRAIGHT_JOIN is a MySQL extension and will
therefore break on other database engines.
Roan Kattouw (Catrope)