質問: ``` select * from TB_01_0000001 union all select * from TB_01_0000002; ``` このようなクエリを書いているのですが、一応テーブルを TB_01_0000001 TB_01_0000002 TB_01_0000003 TB_01_0000004 ... と増やしていく予定です。フィールドなどの構造は全て同じです。 それに従い、上のクエリも文字数が増えていきます。 テーブルを分割している理由は、数十万レコードになると結果が帰ってくるのに時間がかかるからです。 あくまで予定なので、仮に、現時点でTB_01_0000002がなかったら、上のクエリはエラー1146になります。 ですが、コーディングの特性上、(上のクエリをたとえばTB_01_0000100まで続けて書いておいて、テーブルが存在しなくても)エラー1146を無視して、存在している分だけでUNIONできないかと考えております。 何か良い方法がありましたら教えていただけますと幸いです。 よろしくお願いいたします。
回答: 「TB_01_0000001」などの区分を設けてひとつのテーブルにまとめるべきだったのでは?現行のままテーブルが増えるとどんどんパフォーマンスが悪くなります。 テーブルの抽出条件がどうなっているかも確認しましょう。