Avoid stupid mariadb filesort in findMissingFiles.php
[lhc/web/wiklou.git] / maintenance / findMissingFiles.php
index 5f9f643..add7108 100644 (file)
@@ -59,20 +59,22 @@ class FindMissingFiles extends Maintenance {
                do {
                        $res = $dbr->select(
                                array_merge( array( 'page' ), $joinTables ),
-                               array( 'img_name' => 'DISTINCT(page_title)' ),
+                               array( 'name' => 'img_name' ),
                                array( 'page_namespace' => NS_FILE,
                                        "page_title >= " . $dbr->addQuotes( $lastName ) ),
                                __METHOD__,
-                               array( 'ORDER BY' => 'page_title', 'LIMIT' => $this->mBatchSize ),
+                               // DISTINCT causes a pointless filesort
+                               array( 'ORDER BY' => 'name', 'GROUP BY' => 'name',
+                                       'LIMIT' => $this->mBatchSize ),
                                $joinConds
                        );
 
                        // Check if any of these files are missing...
                        $pathsByName = array();
                        foreach ( $res as $row ) {
-                               $file = $repo->newFile( $row->img_name );
-                               $pathsByName[$row->img_name] = $file->getPath();
-                               $lastName = $row->img_name;
+                               $file = $repo->newFile( $row->name );
+                               $pathsByName[$row->name] = $file->getPath();
+                               $lastName = $row->name;
                        }
                        $be->preloadFileStat( array( 'srcs' => $pathsByName ) );
                        foreach ( $pathsByName as $path ) {