同じスキーマを持つ複数のテーブルのレコードを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にあります
はい、冗長性/冗長性の低い方法があります-PARTITION
年ごとに1つのテーブル。その後、単一のSELECT
がその仕事をします。
しかし、それは賢いことではないかもしれません。複数のテーブルに分割することでどのクエリにメリットがありますか?
@Rickが言うように、最初に別のテーブルが必要な理由を最初に質問しますが、これが制御不能であると想定すると、これが通常のクエリである場合、ビューを作成するのが最も簡単かもしれません。これらがMyISAMテーブルである場合は、Mergeテーブルも検討できます。