12 個のテーブルの行を単純に「すべて結合」しようとしています。すべてのテーブルを組み合わせると、115 行になります。ただし、以下のクエリを実行すると、「explain」を使用すると次のようになり、「log-queries-not-using-indexes」に設定すると mysql-slow.log にエントリが記録されます。
Rows_sent: 115 Rows_examined: 1008
すべての行を結合 (つまり、「結合」) するだけでよいのに、mysql が 1008 行を調べる方法に少し戸惑っています。ヒントや指針をいただければ幸いです。
クエリは次のとおりです。
(SELECT id, var_lng_1, 0 as tbl_col FROM tbl1 )
UNION ALL
(SELECT id, var_lng_1, 1 as tbl_col FROM tbl2 )
UNION ALL
(SELECT id, var_lng_1, 2 as tbl_col FROM tbl3 )
UNION ALL
(SELECT id, var_lng_1, 3 as tbl_col FROM tbl4 )
UNION ALL
(SELECT id, var_lng_1, 4 as tbl_col FROM tbl5 )
UNION ALL
(SELECT id, var_lng_1, 5 as tbl_col FROM tbl6 )
UNION ALL
(SELECT id, var_lng_1, 6 as tbl_col FROM tbl7 )
UNION ALL
(SELECT id, var_lng_1, 7 as tbl_col FROM tbl8 )
UNION ALL
(SELECT id, var_lng_1, 8 as tbl_col FROM tbl9 )
UNION ALL
(SELECT id, var_lng_1, 9 as tbl_col FROM tbl10 )
UNION ALL
(SELECT id, var_lng_1, 10 as tbl_col FROM tbl11 )
UNION ALL
(SELECT id, var_lng_1, 11 as tbl_col FROM tbl12 );
どんな入力でも大歓迎です
PS: (念のため) すべての ID は primary,tiny_int(3), auto_increment 列です。IDだけで同じクエリも試しました(つまり、「select id from ....」ですが、違いはありませんでした:(
完全な説明出力:
[id] => 1
[select_type] => PRIMARY
[table] => tbl1
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 7
[Extra] =>
[id] => 2
[select_type] => UNION
[table] => tbl2
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 18
[Extra] =>
[id] => 3
[select_type] => UNION
[table] => tbl3
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 8
[Extra] =>
[id] => 4
[select_type] => UNION
[table] => tbl4
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 10
[Extra] =>
[id] => 5
[select_type] => UNION
[table] => tbl5
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 11
[Extra] =>
[id] => 6
[select_type] => UNION
[table] => tbl6
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 14
[Extra] =>
[id] => 7
[select_type] => UNION
[table] => tbl7
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 10
[Extra] =>
[id] => 8
[select_type] => UNION
[table] => tbl8
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 6
[Extra] =>
[id] => 9
[select_type] => UNION
[table] => tbl9
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 3
[Extra] =>
[id] => 10
[select_type] => UNION
[table] => tbl10
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 2
[Extra] =>
[id] => 11
[select_type] => UNION
[table] => tbl11
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 6
[Extra] =>
[id] => 12
[select_type] => UNION
[table] => tbl12
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 20
[Extra] =>
[id] =>
[select_type] => UNION RESULT
[table] => <union1,2,3,4,5,6,7,8,9,10,11,12>
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] =>
[Extra] =>