Index: src/wp-admin/includes/upgrade.php
===================================================================
--- src/wp-admin/includes/upgrade.php	(revision 37538)
+++ src/wp-admin/includes/upgrade.php	(working copy)
@@ -2201,7 +2201,7 @@
 				case 'unique':
 				case 'key':
 					$validfield = false;
-					$indices[] = trim(trim($fld), ", \n");
+					$indices[] = trim( trim( $fld ), ", \n" );
 					break;
 			}
 			$fld = trim( $fld );
@@ -2242,7 +2242,7 @@
 
 					if ( $do_change ) {
 						// Add a query to change the column type.
-						$cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[ $tablefield_field_lowercased ];
+						$cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN `{$tablefield->Field}` " . $cfields[ $tablefield_field_lowercased ];
 						$for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}";
 					}
 				}
@@ -2252,7 +2252,7 @@
 					$default_value = $matches[1];
 					if ($tablefield->Default != $default_value) {
 						// Add a query to change the column's default value
-						$cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'";
+						$cqueries[] = "ALTER TABLE {$table} ALTER COLUMN `{$tablefield->Field}` SET DEFAULT '{$default_value}'";
 						$for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}";
 					}
 				}
@@ -2312,7 +2312,7 @@
 					if ($index_columns != '') $index_columns .= ',';
 
 					// Add the field to the column list string.
-					$index_columns .= $column_data['fieldname'];
+					$index_columns .= '`' . $column_data['fieldname'] . '`';
 					if ($column_data['subpart'] != '') {
 						$index_columns .= '('.$column_data['subpart'].')';
 					}
Index: tests/phpunit/tests/dbdelta.php
===================================================================
--- tests/phpunit/tests/dbdelta.php	(revision 37538)
+++ tests/phpunit/tests/dbdelta.php	(working copy)
@@ -488,4 +488,68 @@
 
 		$this->assertEmpty( $updates );
 	}
+
+	/**
+	 * @ticket 20263
+	 */
+	function test_query_with_backticks_does_not_cause_a_query_to_alter_all_columns_and_indices_to_run_even_if_none_have_changed() {
+		global $wpdb;
+
+		$schema = "
+			CREATE TABLE {$wpdb->prefix}dbdelta_test2 (
+				`id` bigint(20) NOT NULL AUTO_INCREMENT,
+				`references` varchar(255) NOT NULL,
+				PRIMARY KEY  (`id`),
+				KEY `compound_key` (`id`,`references`)
+			)
+		";
+
+		$wpdb->query( $schema );
+
+		$updates = dbDelta( $schema );
+
+		$table_indices = $wpdb->get_results( "SHOW INDEX FROM {$wpdb->prefix}dbdelta_test2" );
+		$compound_key_index = wp_list_filter( $table_indices, array( 'Key_name' => 'compound_key' ) );
+
+		$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}dbdelta_test2" );
+
+		$this->assertCount( 2, $compound_key_index );
+		$this->assertEmpty( $updates );
+	}
+
+	/**
+	 * @group 20263
+	 */
+	function test_query_with_reserved_keywords_does_not_explode() {
+		global $wpdb;
+
+		$updates = dbDelta(
+			"
+			CREATE TABLE {$wpdb->prefix}dbdelta_test (
+				id bigint(20) NOT NULL AUTO_INCREMENT,
+				column_1 varchar(255) NOT NULL,
+				column_2 text,
+				column_3 blob,
+				`references` varchar(255) NOT NULL,
+				PRIMARY KEY  (id),
+				KEY key_1 (column_1),
+				KEY compound_key (id,column_1),
+				KEY compound_key2 (id,`references`)
+				FULLTEXT KEY fulltext_key (column_1)
+			) ENGINE=MyISAM
+			"
+		);
+
+		$table_indices = $wpdb->get_results( "SHOW INDEX FROM {$wpdb->prefix}dbdelta_test" );
+
+		$this->assertCount( 2, wp_list_filter( $table_indices, array( 'Key_name' => 'compound_key2' ) , 'AND' ) );
+
+		$this->assertSame(
+			array(
+				"{$wpdb->prefix}dbdelta_test.references" => "Added column {$wpdb->prefix}dbdelta_test.references",
+				0 => "Added index {$wpdb->prefix}dbdelta_test KEY compound_key2 (id,`references`)",
+			),
+			$updates
+		);
+	}
 }
