インデックス検索ができるSQL文を書こう


NULL値の検索
 ・列名 IS NULL ‐NULL値を別のデータに置き換える
                ‐ビットマップ索引を使用する 

暗黙の型変換
 ・CHAR列 = 1
 ・VARCHAR2列 = 1 ‐比較するデータ型を列のデータ型に合わせる
                  CHAR列 = '1'
                  CHAR列 = TO_CHAR(1)
                  ‐INDEXヒントを使用する(索引列にNOT NULL制約が必要) 

索引列に対して、関数や算術を実施
 ・VARCHAR2列||'様' = '斉藤様'
 ・NUMBER列 * 20 = 10000
 ・substr(VARCHAR2列,1,2) = 'AB' ‐関数、演算を右辺(索引列でない方)に移動する
                                 ・VARCHAR2列 = '斉藤'
                                 ・NUMBER列 = 10000/20
                                 ・VARCHAR2列 LIKE 'AB%'
                                 ‐関数索引を使用する(Oracle 9i以上で使用可能)
				  [例]
				   CREATE INDEX SUBSTR_IDX ON
				   SUPPLIER ( SUBSTR(列名,4,6) );
				 ‐INDEXヒントを使用する(索引列にNOT NULL制約が必要) 

LIKEの中間一致、後方一致
 ・列名 LIKE'%TEST%'
 ・列名 LIKE'%TEST' ‐INDEXヒントを使用する(索引列にNOT NULL制約が必要) 

!=、<>の使用(Not Equals)
 ・列名 != '1'
 ・列名 <> '1' ‐inで置き換える(可能な場合)
               ・列名 in ('2','3')
               注)inで指定できる最大リスト数は1000個
               ‐INDEXヒントを使用する(索引列にNOT NULL制約が必要)