0 はじめに
・db2のデータメンテとかする場合の接続コマンドや注意点を記載しました。
1 db2接続コマンド
DB2起動
db2 db2start
DB2ログイン
db2 connect to DB名 user ユーザー名 using パスワード
SQLファイルを実行する
db2 -tvf tmp/jikkou.sql
データをCSVにexoprtする ※of delは、CSV形式を意味します
db2 export to 出力パス + 出力ファイル名 of del "SQL文"
DB2切断
db2 disconnect current
2 データメンテによるSQL作成の注意点(※遅くなるのでやめた方がいい注意点、やむ負えない場合は使用してよい)
1 実行する時に利用するSQLファイルは2MBまでが望ましい
2 抽出のアンサーセットは絞り込める順番にする(パフォーマンス向上のため)
3 WHERE句に索引キーとなるカラムに対して関数や演算子は利用しない
・インデックスが効かなくなる
4 索引キーとなるカラムに対して、LIKE文の使用NG
・インデックスが効かなくなる
5 WHERE句のカラムの比較で属性の異なる値を比較するのはNG
・遅くなる
6 GROUP BY 使用するときに抽出条件にWHERE句で指定している
・HAVINGは利用しない、GROUP BYした後、絞り込むのは非効率
7 UNION句は使用していない
・アクセスする表の数が増えるほどソート等のCPUが増えるため
8 IN句の最大件数は確認しておく
9 副問い合わせは行っていない
10 SELECT * COUNT * みたいに*を使用しない
11 SELECT は必要な列のみにする
12 SUM MAX AVG COUNT以外の集約関数はなるべく使用しない
13 INSERTはカラム名は省略せず、全て指定して作成する
・省略するとテーブル構造が変更になったときに再バインドを行う必要があるため
14 JOINはしていない
15 With UR、RS、RR指定して、ISOLATION LEVEL(標準はCS)の変更を行っていない
16 カーソルで更新処理をするとき、FOR UPDATE OF句(更新対象行のロックを取得するため)を明示的に指定している
17 UPDATE、DELETE文はカーソル使用している
18 カーソル読み込み処理はFOR FETCH ONLY を使用している
・不要なロックを避けるため