OracleSQLをシンプルに高速で書くための習慣

 私はこれまで業務アプリの運用保守を中心に担当してきました。中でも大規模システム&トラブルプロジェクトの運用保守が長く、深夜のトラブル対応も相当数、経験してきました。

 トラブル対応は一分一秒を争います。そんなとき多いのがデータリカバリするための対応です。より正確に、より速くSQLを書き、実行することが求められます。そんな状況で私が行ったSQLを速く正確に書く方法を紹介します。

1.まずSELECT句を*で書く

 当たり前ですがSELECT句を書きます。一旦、項目は一旦*としてfromまで書きます。
 【例】

 select
  *
 from

2.テーブルは結合する順番で書く

 結合する順番でテーブルを並べます。キレイにインデントは揃えてください。
 可読性はミスを減らすために重要です。whereまで書きます。
【例】

 select
  *
 from
  TABLE1 a
  ,TABLE2 b
  ,TABLE3 c
 where

3.抽出条件、結合条件の順で書く

 抽出条件と結合条件を分けて書いておきます。見返すときにどこを見ればよいかすぐにわかります。
【例】

 select
  *
 from
  TABLE1 a
  ,TABLE2 b
  ,TABLE3 c
 where
  a.USER_ID = ‘A001′ –抽出条件1
  and a.USER_KB = ’01’ –抽出条件2
  and a.USER_ID = b.USER_ID –結合条件3
  and b.USER_ID = c.USER_ID –結合条件3

4.最後にSELECT句を書く

 テーブル、抽出条件、結合条件が出そろったところで抽出項目を書きます。完成です。
 【例】

 select
  a.USER_ID
  ,a.USER_NM
 from
  TABLE1 a
  ,TABLE2 b
  ,TABLE3 c
 where
  a.USER_ID = ‘A001′ –抽出条件1
  and a.USER_KB = ’01’ –抽出条件2
  and a.USER_ID = b.USER_ID –結合条件3
  and b.USER_ID = c.USER_ID –結合条件3


  

最後に

 ちなみにこの順番はSQLを評価するときと同じ順です。最近はJOINがスタンダードなので、少し違うかもしれませんが。