🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

1回答

1507閲覧

大量データ更新 バッチ設計について

AT_WORK24

総合スコア9

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2019/12/02 01:48

大量のデータ更新をバッチファイルで行おうと考えているのですが、
負荷を考慮した場合の設計、データの更新方法について悩んでおります。

【概要】
1テーブルの1カラムの値を更新する

・更新件数
約300万件
(更新対象となるレコードは日々増えていく)

更新対象のレコードを抽出するSQL自体が非常に重いため、
予め更新対象のレコードの主キーなどをExcelファイルに書き出しておき、
バッチからそのExcelファイルを参照させて、更新していく方向で考えているのですが、
日々更新対象のレコードが増えていくため、その都度手動でExcelファイルを生成するのも
非効率的な気がしています・・

定時起動でも行えるとは思うんですが、バッチファイル実行のたびに
コストの高い更新対象のレコードを抽出するSQLが流れる点が懸念です。

負荷面を考慮した場合どのような設計が良いのでしょうか。
なにかアドバイスいただけたら幸いです。

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

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

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

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

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

hihijiji

2019/12/02 02:26

> 更新対象のレコードを抽出するSQL自体が非常に重い まずこれを何とかするべきかと
Orlofsky

2019/12/02 03:40 編集

>更新対象のレコードを抽出するSQL自体が非常に重いため、 ほとんどの場合、SQLのチューニング以外に解決方法はないでしょう。 差し支えない範囲で質問にCREATE TABLE, CREATE INDEX, SELECT, UPDATe, 実行計画(データベースにより取得方法が異なる) を https://teratail.com/help/question-tips#questionTips3-7 の [コード] で提示されては?
guest

回答1

0

300万件のデータを日々すべて書き換えるイメージですかね?
ちょっとありえない運用だと思いますので、別の方法を検討されるとよいでしょう
具体的に何をどうしたいか提示したほうが良いと思います

投稿2019/12/02 02:40

yambejp

総合スコア116694

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

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

AT_WORK24

2019/12/02 03:17

>300万件のデータを日々すべて書き換えるイメージですかね? 毎日300万件の更新を行うわけではなくて、最終的に300万件を更新ができてればいいので、分割して日々対象レコードの更新を行っていくイメージです。 更新すべき対象レコードが増えていく件数については、日に数千件程度を想定しています。
yambejp

2019/12/02 03:24

日に数千件であれば特に分割処理をしなくても 十分こなせる量ではないのでしょうか? →少ない量なら少なりに処理する →多い量ならその処理をやめてもっと効率的なデータ管理をする
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問