![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_13.png?c9bd177)
夜間処理で
テーブルX(明細表)とテーブルY(コード表)を
結合(直積)してテーブルZ(結果表)へ挿入する処理が
現在20分かかるので、高速化したいと思っています。
何か良い知恵を教えてください。
下記の例で、項目CODE_Dは項目CODE_Bの集計先のようなキーで
テーブルXの情報に 項目CODE_Dを編集することで
検索性能を向上させる目的があります。
SQLの時間のかかるポイントは
(1)SELECT時に直積を作成する個所
(2)インサート
と思っており、そこを速くできれば効果があるのかもしれません。
各テーブルにある項目CODE_Aは2値しかとらないので
項目CODE_Aをキーにしてパーティション化しようかとも考えていますが
効果があるのかどうか悩んでいます。
■例
[入力]
・テーブルX(明細表) 7万件
項目 CODE_A, CODE_B, CODE_C, DATA_Z
・テーブルY(コード表) 37万件
項目 CODE_A, CODE_B, CODE_D
[出力]
・テーブルZ(結果表) 340万件
項目 CODE_A, CODE_B, CODE_C, CODE_D, DATA_Z
[SQL文]
INSERT INTO Z NOLOGGING
SELECT X.CODE_A, X.CODE_B, X.CODE_C, Y.CODE_D, X.DATA_Z
FROM Y, X
WHERE Y.CODE_A = X.CODE_A
AND Y.CODE_B = X.CODE_B
[環境等の条件]
・ORACLEのバージョン 9.2.0.1
・parallel_max_servers 16
・redoやundo表領域、テーブル表領域は十分にメンテナンスされている
・ディスクは RAID5で、たくさんのメモリを搭載
・CPU数は4つ
No.2ベストアンサー
- 回答日時:
こんにちわ。
処理件数が多そうなので、INSERT ~ SELECT 文をX.CODE_B の値で8分割
(CPU数×2) 位に分割して多重で処理させてみてはどうでしょう?
空きブロックの獲得で競合が発生しないように、Freelist の調整を忘れないで下さい。
どうもありがとうございます。
これを試してみようと思います。
今は
INSERT /*+PARALLEL APPEND */ INTO ALARM_B NOLOGGING
でかなり速くなり、とりあえずお茶を濁しています。
No.1
- 回答日時:
OSさえも書いていないので回答はできないので、ポイントについて。
・CPU の使用率
・I/O 状況 (Unix 系の場合は iostat)
・statspack で取得できる Top 5 待機イベント
・statspack で取得できる各データファイルへのアクセス状況
・SQL トレースの結果
・ディスク本数
・テーブルに対する索引の有無
このあたりが最初にチェックすべきポイントでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP $_SESSIONについて教えて下さい。 4 2023/03/13 13:45
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) CODE関数のvbaバージョンか方法はありますか? 5 2022/09/01 17:00
- その他(プログラミング・Web制作) visual studio code 共有方法 1 2022/04/06 17:55
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
- Excel(エクセル) 全角文字「ヴ」の半角文字「ヴ」への変換方法について 3 2022/11/05 12:07
- その他(プログラミング・Web制作) vscodeエラー 1 2022/05/01 21:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
重複するキーから一番古い年月...
-
2つのテーブルから条件に一致...
-
商品コード番号を入力すると商...
-
Accessでフィールドを比較した...
-
【Access】順位を付けたい
-
ACCESS ピボットテーブ...
-
VIEWでテーブルの集計結果...
-
アクセス2000のフォームに...
-
PLSQLで集計関数の値を配列に入...
-
[Oracle] UPDATE分の副問い合わ...
-
Accessリレーションシップ
-
SQL文について(片方のテーブル...
-
ACCESSのコンパイルエラーについて
-
MySQLのgroup by同士の結合につ...
-
ACCESS2000でDCount関数の使い方
-
accessでの2つの表を使った更...
-
連番のMin, Maxを取得したい
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessでクエリを完了できませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
商品コード番号を入力すると商...
-
行方向のデータを横に並べる
-
PLSQLの識別子エラー
-
Inner join と Left joinの明...
-
片方だけ抽出する方法(SQL)
-
SQL 2つのテーブルとSUBSTRING...
-
Accessユニオンクエリーで2つ...
-
主キーの変更
-
Accessでフィールドを比較した...
-
SQL文について(片方のテーブル...
-
続.ORACLEのSELECTのソートに...
-
場合によって条件を変えるSQL
-
請求と入金のテーブルの作成の...
-
sqlのupdate文で質問です。 テ...
-
[Oracle] UPDATE分の副問い合わ...
-
accessで移動平均する方法
おすすめ情報