Page MenuHomePhabricator
Paste P4041

USE INDEX, STRAIGHT JOINs and IGNORE INDEXes on mediawiki/core
ActivePublic

Authored by jcrespo on Sep 14 2016, 12:46 PM.
jynus@seul:~/core$ git grep 'USE INDEX' | cat
HISTORY:* (bug 3056) MySQL 3 compatibility fix: USE INDEX instead of FORCE INDEX
HISTORY:* Specify USE INDEX on Allpages chunk queries, sometimes gets lost
HISTORY:* (bug 3056) MySQL 3 compatibility fix: USE INDEX instead of FORCE INDEX
includes/CategoryViewer.php: 'USE INDEX' => [ 'categorylinks' => 'cl_sortkey' ],
includes/Linker.php: 'USE INDEX' => [ 'revision' => 'page_timestamp' ],
includes/actions/HistoryAction.php: 'USE INDEX' => 'page_timestamp', 'LIMIT' => $limit ]
includes/actions/HistoryAction.php: 'options' => [ 'USE INDEX' => [ 'revision' => 'page_timestamp' ] ],
includes/api/ApiQueryAllImages.php: $this->addOption( 'USE INDEX', [ 'image' => 'img_usertext_timestamp' ] );
includes/api/ApiQueryAllImages.php: $this->addOption( 'USE INDEX', [ 'image' => 'img_timestamp' ] );
includes/api/ApiQueryAllLinks.php: $this->addOption( 'USE INDEX', $this->useIndex );
includes/api/ApiQueryAllPages.php: $this->addOption( 'USE INDEX', 'name_title' );
includes/api/ApiQueryBacklinks.php: $this->addOption( 'USE INDEX', [ 'page' => 'PRIMARY' ] );
includes/api/ApiQueryBacklinksprop.php: $this->addOption( 'USE INDEX', [ $settings['linktable'] => $idxWithFromNS ] );
includes/api/ApiQueryBacklinksprop.php: $this->addOption( 'USE INDEX', [ $settings['linktable'] => $idxNoFromNS ] );
includes/api/ApiQueryBase.php: * Add an option such as LIMIT or USE INDEX. If an option was set
includes/api/ApiQueryCategoryMembers.php: $this->addTables( [ 'page', 'categorylinks' ] ); // must be in this order for 'USE INDEX'
includes/api/ApiQueryCategoryMembers.php: $this->addOption( 'USE INDEX', 'cl_timestamp' );
includes/api/ApiQueryCategoryMembers.php: $this->addOption( 'USE INDEX', 'cl_sortkey' );
includes/api/ApiQueryDeletedrevs.php: 'USE INDEX',
includes/api/ApiQueryExtLinksUsage.php: $this->addTables( [ 'page', 'externallinks' ] ); // must be in this order for 'USE INDEX'
includes/api/ApiQueryExtLinksUsage.php: $this->addOption( 'USE INDEX', 'el_index' );
includes/api/ApiQueryLinks.php: $this->addOption( 'USE INDEX', $this->prefix . '_from' );
includes/api/ApiQueryUserContributions.php: $this->addOption( 'USE INDEX', $index );
includes/db/Database.php: * Returns an optional USE INDEX clause to go after the table, and a
includes/db/Database.php: if ( isset( $options['USE INDEX'] ) && is_string( $options['USE INDEX'] ) ) {
includes/db/Database.php: $useIndex = $this->useIndexClause( $options['USE INDEX'] );
includes/db/Database.php: $useIndexes = ( isset( $options['USE INDEX'] ) && is_array( $options['USE INDEX'] ) )
includes/db/Database.php: ? $options['USE INDEX']
includes/db/Database.php: * which might have a JOIN and/or USE INDEX or IGNORE INDEX clause
includes/db/Database.php: if ( isset( $use_index[$alias] ) ) { // has USE INDEX?
includes/db/Database.php: * USE INDEX clause. Unlikely to be useful for anything but MySQL. This
includes/db/DatabaseOracle.php: * Returns an optional USE INDEX clause to go after the table, and a
includes/db/DatabaseOracle.php: if ( isset( $options['USE INDEX'] ) && !is_array( $options['USE INDEX'] ) ) {
includes/db/DatabaseOracle.php: $useIndex = $this->useIndexClause( $options['USE INDEX'] );
includes/db/IDatabase.php: * - USE INDEX: This may be either a string giving the index name to use
includes/export/WikiExporter.php: [ 'ORDER BY' => 'log_id', 'USE INDEX' => [ 'logging' => 'PRIMARY' ] ]
includes/export/WikiExporter.php: $opts['USE INDEX'] = [];
includes/export/WikiExporter.php: $opts['USE INDEX']['revision'] = 'rev_page_id';
includes/export/WikiExporter.php: $opts['USE INDEX']['page'] = 'PRIMARY';
includes/filerepo/file/LocalFile.php: $opts['USE INDEX'] = [ 'oldimage' => 'oi_name_timestamp' ];
includes/logging/LogPager.php: $options['USE INDEX'] = $index;
includes/page/Article.php: [ 'USE INDEX' => 'rc_timestamp' ]
includes/page/WikiPage.php: [ 'USE INDEX' => 'page_timestamp',
includes/revisiondelete/RevDelRevisionList.php: 'USE INDEX' => [ 'revision' => 'PRIMARY' ] // workaround for MySQL bug (T104313)
includes/specials/SpecialAllPages.php: 'USE INDEX' => 'name_title',
includes/specials/SpecialLinkSearch.php: 'options' => [ 'USE INDEX' => $clause ]
includes/specials/SpecialPrefixindex.php: 'USE INDEX' => 'name_title',
includes/specials/SpecialShortpages.php: $options = [ 'USE INDEX' => [ 'page' => 'page_redirect_namespace_len' ] ];
includes/specials/pagers/AllMessagesTablePager.php: [ 'USE INDEX' => 'name_title' ]
includes/specials/pagers/CategoryPager.php: 'options' => [ 'USE INDEX' => 'cat_title' ],
includes/specials/pagers/ContribsPager.php: $options['USE INDEX'] = [ 'revision' => $index ];
includes/specials/pagers/DeletedContribsPager.php: 'options' => [ 'USE INDEX' => $index ]
includes/specials/pagers/NewPagesPager.php: $options = [ 'USE INDEX' => [ 'recentchanges' => $rcIndexes ] ];
maintenance/rebuildFileCache.php: [ 'ORDER BY' => 'page_id ASC', 'USE INDEX' => 'PRIMARY' ]
jynus@seul:~/core$ git grep 'STRAIGHT' | cat
includes/api/ApiQueryAllPages.php: $this->addOption( 'STRAIGHT_JOIN' );
includes/api/ApiQueryAllRevisions.php: $this->addOption( 'STRAIGHT_JOIN' );
includes/api/ApiQueryAllRevisions.php: $this->addOption( 'STRAIGHT_JOIN' );
includes/api/ApiQueryBacklinks.php: $this->addOption( 'STRAIGHT_JOIN' );
includes/api/ApiQueryCategories.php: $this->addOption( 'STRAIGHT_JOIN' );
includes/api/ApiQueryUserContributions.php: // STRAIGHT_JOIN
includes/api/ApiQueryUserContributions.php: $this->addOption( 'STRAIGHT_JOIN' );
includes/cache/BacklinkCache.php: array_merge( [ 'STRAIGHT_JOIN' ], $options )
includes/db/Database.php: if ( isset( $noKeyOptions['STRAIGHT_JOIN'] ) ) {
includes/db/Database.php: $startOpts .= ' /*! STRAIGHT_JOIN */';
includes/db/IDatabase.php: * - STRAIGHT_JOIN
includes/export/WikiExporter.php: $opts[] = 'STRAIGHT_JOIN';
includes/export/WikiExporter.php: $opts[] = 'STRAIGHT_JOIN';
includes/specials/SpecialWhatlinkshere.php: [ 'ORDER BY' => $fromCol, 'LIMIT' => 2 * $queryLimit, 'STRAIGHT_JOIN' ],
includes/specials/pagers/NewFilesPager.php: $options[] = 'STRAIGHT_JOIN';
maintenance/updateCollation.php: 'STRAIGHT_JOIN' // per T58041
jynus@seul:~/core$ git grep 'FORCE INDEX' | cat
HISTORY:* (bug 3056) MySQL 3 compatibility fix: USE INDEX instead of FORCE INDEX
HISTORY:* (bug 3056) MySQL 3 compatibility fix: USE INDEX instead of FORCE INDEX
includes/db/DatabaseMysqlBase.php: return "FORCE INDEX (" . $this->indexName( $index ) . ")";
maintenance/postgres/compare_schemas.pl: if (/FORCE INDEX/ and $file !~ /Database\w*\.php/) {
maintenance/postgres/compare_schemas.pl: warn "Found FORCE INDEX string at line $. of $file\n";
jynus@seul:~/core$ git grep 'IGNORE INDEX' | cat
includes/db/Database.php: if ( isset( $options['IGNORE INDEX'] ) && is_string( $options['IGNORE INDEX'] ) ) {
includes/db/Database.php: $ignoreIndex = $this->ignoreIndexClause( $options['IGNORE INDEX'] );
includes/db/Database.php: $ignoreIndexes = ( isset( $options['IGNORE INDEX'] ) && is_array( $options['IGNORE INDEX'] ) )
includes/db/Database.php: ? $options['IGNORE INDEX']
includes/db/Database.php: * which might have a JOIN and/or USE INDEX or IGNORE INDEX clause
includes/db/Database.php: if ( isset( $ignore_index[$alias] ) ) { // has IGNORE INDEX?
includes/db/Database.php: * IGNORE INDEX clause. Unlikely to be useful for anything but MySQL. This
includes/db/DatabaseMysqlBase.php: return "IGNORE INDEX (" . $this->indexName( $index ) . ")";
includes/db/DatabaseOracle.php: if ( isset( $options['IGNORE INDEX'] ) && !is_array( $options['IGNORE INDEX'] ) ) {
includes/db/DatabaseOracle.php: $ignoreIndex = $this->ignoreIndexClause( $options['IGNORE INDEX'] );