質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

3回答

1267閲覧

MySQLでUNION ALLでテーブルを結合している際にやりたいと思ったこと

HisashiSakamoto

総合スコア28

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2019/04/04 03:30

MySQL

1select * 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できないかと考えております。

何か良い方法がありましたら教えていただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

テーブルを分割している理由は、数十万レコードになると結果が帰ってくるのに時間がかかる

UNION ALLは性質上むしろ効率が悪くなると思います
そもそもwhere句なしで直結するのもいただけません

パーティショニングで処理することを検討してみてください

投稿2019/04/04 03:36

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HisashiSakamoto

2019/04/04 03:46

ありがとうございます。 パーティショニングは、レコードが100億程度になっても問題ないでしょうか?
yambejp

2019/04/04 03:51

データがきちんと整理されるようにすれば 物理的なTABLEデータの量は適正に保たれるでしょう ただし100億のデータをSQLで管理できるかといわれると微妙です。 ビッグデータはNoSQLの守備範囲かもしれません
guest

0

ベストアンサー

SQL

1SHOW TABLES like 'TB_01_%'

なとどして、実在するテーブルのリストから動的にUNIONクエリーを作成する。

ですがやっぱ、パーティショニングでしょうね。

投稿2019/04/04 04:02

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HisashiSakamoto

2019/04/08 01:40

皆さんありがとうございます。 パーティショニングも一つの良い選択肢かもしれません。 システムの設計上、パーティショニングをするか、テーブル数を増やすか、については少し迷っておりますので、また検討をしていきたいと考えています。
guest

0

「TB_01_0000001」などの区分を設けてひとつのテーブルにまとめるべきだったのでは?現行のままテーブルが増えるとどんどんパフォーマンスが悪くなります。
テーブルの抽出条件がどうなっているかも確認しましょう。

投稿2019/04/04 03:50

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問