現在実行しようとしている MySQL クエリは、機能的にはこれと同等です。
SELECT small_table.A, small_table.B, small_table.C, huge_table.X, huge_table.Y
FROM small_table LEFT JOIN huge_table
ON small_table.D = huge_table.Z
WHERE small_table.E = 'blah'
おそらく、2 番目のテーブルが巨大であるため (つまり、合計サイズが 3 MB の 7500 行)、クエリが終了していないように見えます (少なくとも妥当な時間内ではありません)。妥当な時間内に機能的に同等の結合を実行できますか、それとも巨大なテーブルから小さなテーブルに列を追加して冗長性を導入する必要がありますか? (私はSQLの初心者です。)
この句WHERE small_table.E = 'blah'
は静的であり、変更されることはあり'blah'
ません。
要求された EXPLAIN 出力は次のとおりです。
Array ( [0] => Array ( [0] => 1 [id] => 1 [1] => SIMPLE [select_type] => SIMPLE [2] => small_table [table] => small_table [3] => ref [type] => ref [4] => E [possible_keys] => E [5] => E [key] => E [6] => 1 [key_len] => 1 [7] => const [ref] => const [8] => 1064 [rows] => 1064 [9] => Using where [Extra] => Using where ) [1] => Array ( [0] => 1 [id] => 1 [1] => SIMPLE [select_type] => SIMPLE [2] => huge_table [table] => huge_table [3] => eq_ref [type] => eq_ref [4] => PRIMARY [possible_keys] => PRIMARY [5] => PRIMARY [key] => PRIMARY [6] => 4 [key_len] => 4 [7] => my_database.small_table.D [ref] => my_database.small_table.D [8] => 1 [rows] => 1 [9] => [Extra] => ) )