web-dev-qa-db-ja.com

MySQLで同じスキーマを持つ複数のテーブルからUNIONを選択する

同じスキーマを持つ複数のテーブルのレコードをSELECT(結合)したい。これは私が使用するクエリです:

SELECT visitor_name, in_time, out_time, blacklist FROM visitor_archive_2012 UNION 
SELECT visitor_name, in_time, out_time, blacklist FROM visitor_archive_2013 UNION 
SELECT visitor_name, in_time, out_time, blacklist FROM visitor_archive_2014 UNION 
SELECT visitor_name, in_time, out_time, blacklist FROM visitor_archive_2015 

私は、このクエリを記述するための冗長で冗長でない方法があることを確信しています。各テーブルのスキーマはまったく同じです。これはMySQL 5.6にあります

2
hanxue

はい、冗長性/冗長性の低い方法があります-PARTITION年ごとに1つのテーブル。その後、単一のSELECTがその仕事をします。

しかし、それは賢いことではないかもしれません。複数のテーブルに分割することでどのクエリにメリットがありますか?

1
Rick James

@Rickが言うように、最初に別のテーブルが必要な理由を最初に質問しますが、これが制御不能であると想定すると、これが通常のクエリである場合、ビューを作成するのが最も簡単かもしれません。これらがMyISAMテーブルである場合は、Mergeテーブルも検討できます。

1
Ian Roberts