質問編集履歴
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
仕様をそのままコーディングすると
|
8
8
|
|
9
|
-
WHERE NOT SUBSTR(ID,-1)
|
9
|
+
WHERE NOT SUBSTR(ID,-1) = '1'
|
10
10
|
|
11
11
|
となると思いますが、
|
12
12
|
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
SQLの性能について質問です。
|
2
2
|
|
3
|
-
Oracleにて、抽出条件が『ID(varchar2)の下一桁が「1」でないレコード』というSQLを作成しています。(IDは索引付きのカラムです。)
|
3
|
+
Oracle 11gにて、抽出条件が『ID(varchar2)の下一桁が「1」でないレコード』というSQLを作成しています。(IDは索引付きのカラムです。)
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
+
仕様をそのままコーディングすると
|
8
|
+
|
7
9
|
WHERE NOT SUBSTR(ID,-1)
|
8
10
|
|
11
|
+
となると思いますが、
|
12
|
+
|
9
|
-
|
13
|
+
NOTにより索引走査ではなく全表走査となると認識しています。
|
10
14
|
|
11
15
|
|
12
16
|
|
13
|
-
|
17
|
+
そのため性能の良いSQLを検討中ですが、
|
14
18
|
|
15
19
|
REGEXP_LIKE(ID,'[^1]$')
|
16
20
|
|
@@ -18,7 +22,7 @@
|
|
18
22
|
|
19
23
|
|
20
24
|
|
21
|
-
LIKEは
|
25
|
+
LIKEはワイルドカードの前までは索引走査されると聞いたので、そうするとREGEXP_LIKEも全表走査されると予想していますが、情報がなく困っています。
|
22
26
|
|
23
27
|
もし結局性能が変わらないようであれば、NOT SUBSTRの方が可読性が高いので採用したいと思っています。
|
24
28
|
|