diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php index ae707fb5b54..99be91f5d6b 100644 --- a/lib/private/Files/Cache/Cache.php +++ b/lib/private/Files/Cache/Cache.php @@ -840,7 +840,13 @@ class Cache implements ICache { protected function buildSearchQuery(ISearchQuery $searchQuery): IQueryBuilder { $builder = $this->getQueryBuilder(); - $query = $builder->selectFileCache('file'); + // mysql really likes to pick an index for sorting if it can't fully satisfy the where + // filter with an index, since search queries pretty much never are fully filtered by index + // mysql often picks an index for sorting instead of the *much* more useful index for filtering. + // + // To bypass this, we tell mysql explicitly not to use the mtime (the default order field) index, + // so it will instead pick an index that is actually useful. + $query = $builder->selectFileCache('file', 'ignore index for order by (fs_mtime)'); $query->whereStorageId();