Multisite: Improve performance of the upgrade page on large networks.
The query to select the next 5 blogs to upgrade was ordered by `registered`, which isn't indexed. This causes the query to table scan, which will be slow on networks with many blogs. The query only needs to be ordered by something that won't change, so ordering by `blog_id` is a good replacement. `blog_id` is indexed, and it's the only column being returned, so MySQL is able to optimize for a fast index read. Props fliespl. Fixes #37612. git-svn-id: https://develop.svn.wordpress.org/trunk@38229 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
ff416b77f3
commit
cfafcf3997
|
@ -55,7 +55,7 @@ switch ( $action ) {
|
||||||
update_site_option( 'wpmu_upgrade_site', $wp_db_version );
|
update_site_option( 'wpmu_upgrade_site', $wp_db_version );
|
||||||
}
|
}
|
||||||
|
|
||||||
$blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC LIMIT {$n}, 5", ARRAY_A );
|
$blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY blog_id DESC LIMIT {$n}, 5", ARRAY_A );
|
||||||
if ( empty( $blogs ) ) {
|
if ( empty( $blogs ) ) {
|
||||||
echo '<p>' . __( 'All done!' ) . '</p>';
|
echo '<p>' . __( 'All done!' ) . '</p>';
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue