Index: src/wp-admin/includes/upgrade.php
===================================================================
--- src/wp-admin/includes/upgrade.php	(revision 37383)
+++ src/wp-admin/includes/upgrade.php	(working copy)
@@ -2218,7 +2218,11 @@
 			if (array_key_exists(strtolower($tablefield->Field), $cfields)) {
 
 				// Get the field type from the query.
-				preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches);
+				$parts = explode( $tablefield->Field, $cfields[ $tablefield->Field ], 2 );
+				$remainder = ltrim( $parts[1], ' `' );
+
+				preg_match( '/([^ ]+( unsigned)?)/i', $remainder, $matches );
+
 				$fieldtype = $matches[1];
 
 				// Is actual field type different from the field type in query?
Index: tests/phpunit/tests/dbdelta.php
===================================================================
--- tests/phpunit/tests/dbdelta.php	(revision 37383)
+++ tests/phpunit/tests/dbdelta.php	(working copy)
@@ -362,4 +362,28 @@
 
 		$this->assertSame( array(), $actual );
 	}
+
+	/**
+	 * @ticket 20263
+	 */
+	function test_query_with_backticks_does_not_throw_an_undefined_index_warning() {
+		global $wpdb;
+
+		$schema = "
+			CREATE TABLE {$wpdb->prefix}dbdelta_test2 (
+				`id` bigint(20) NOT NULL AUTO_INCREMENT,
+				`column_1` varchar(255) NOT NULL,
+				PRIMARY KEY  (id),
+				KEY compound_key (id,column_1)
+			)
+		";
+
+		$wpdb->query( $schema );
+
+		$updates = dbDelta( $schema, false );
+
+		$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}dbdelta_test2" );
+
+		$this->assertEmpty( $updates );
+	}
 }
