質問するログイン新規登録

質問編集履歴

2

2017/11/30 14:53

投稿

jimxx
jimxx

スコア8

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
  Oracle 11gにて、抽出条件が『ID(varchar2)の下一桁が「1」でないレコード』というSQLを作成しています。(IDは索引付きのカラムです。)
3
3
 
4
4
  仕様をそのままコーディングすると
5
- WHERE NOT SUBSTR(ID,-1)
5
+ WHERE NOT SUBSTR(ID,-1) = '1'
6
6
  となると思いますが、
7
7
  NOTにより索引走査ではなく全表走査となると認識しています。
8
8
 

1

2017/11/30 14:53

投稿

jimxx
jimxx

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,14 +1,16 @@
1
1
  SQLの性能について質問です。
2
- Oracleにて、抽出条件が『ID(varchar2)の下一桁が「1」でないレコード』というSQLを作成しています。(IDは索引付きのカラムです。)
2
+ Oracle 11gにて、抽出条件が『ID(varchar2)の下一桁が「1」でないレコード』というSQLを作成しています。(IDは索引付きのカラムです。)
3
3
 
4
+ 仕様をそのままコーディングすると
4
5
  WHERE NOT SUBSTR(ID,-1)
6
+ となると思いますが、
5
- とすると、NOTにより索引走査ではなく全表走査となると認識していますが、
7
+ NOTにより索引走査ではなく全表走査となると認識しています
6
8
 
7
- 代わりに
9
+ そのため性能の良いSQLを検討中ですが、
8
10
  REGEXP_LIKE(ID,'[^1]$')
9
11
  とした場合、こちらは索引走査されるでしょうか?
10
12
 
11
- LIKEは条件によっては索引走査されると聞きまし、REGEXP_LIKE情報がなく困っています。
13
+ LIKEはワイルドカードの前までは索引走査されると聞のでそうするとREGEXP_LIKEも全表走査されると予想していますが、情報がなく困っています。
12
14
  もし結局性能が変わらないようであれば、NOT SUBSTRの方が可読性が高いので採用したいと思っています。
13
15
 
14
16
  もし他に良い条件式がある場合はご教示願います。