#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 を使用している
・不要なロックを避けるため
####19 カーソル使用後はクローズしてる
####20 一度に実施するUPDATEは200行位にとどめる
####21 LIKEの先頭ワイルドカードはパフォーマンスが悪くなる
####22 COUNT文はCASE文でまとめて書く