[오라클 CHAR형과문자상수(Literal)비교방법]문자형(CHAR TYPE)고 문자상수(문자리커럴) 비교시 RTRIM을 사용하지마세요
-- char type과 문자상수(문자리터럴)의비교
-- where절에 char컬럼과 문자상수 비교시 절대 rtrim같은 함수를 사용하지 마세요.
-- rtrim을 안해도 문자상수가 char로 변형되어 비교하므로 ...
-- 만약 아래 예문처럼 인덱스컬럼에 rtrim을 쓰면 인덱스를 사용하지 못하므로 성능 저하!
myemp1 테이블은 2000만건 컬럼구조는 다음과 같다.
desc myemp1
이름 유형
--------------------- -------------
EMPNO NOT NULL NUMBER
ENAME VARCHAR2(100)
DEPTNO VARCHAR2(1)
ADDR VARCHAR2(100)
SAL NUMBER
SUNGBYUL VARCHAR2(1)
alter table myemp1 add ename2 char(100)
-- ename값을 ename2로 이동시킴
update myemp1
set ename2 = ename
-- ename2를 검색조건으로 조회, 일단 인덱스없이 해보자.
-- 68초
select * from myemp1 where ename2 = '마길동444'
-- 이번에는 ename2로 인덱스를 생성한 후 다시 조회하자.
create index idx_myemp1_ename2 on myemp1(ename2)
-- 0초
select * from myemp1 where ename2 = '마길동444'
-- ename2컬럼이 char(100)라고 해서 우측공백을 제거하기 위해 rtrim을 사용하면 안된다
-- 인덱스를 사용하지 못하므로 어마어마한 시간이 걸린다.
-- rtrim을 사용안해도 '마길동444'가 char(100)형태로 자동 변환되어 비교된다.
-- 67초
select * from myemp1 where rtrim(ename2) = '마길동444' (잘못된 쿼리)
열공하세요~
-- char type과 문자상수(문자리터럴)의비교
-- where절에 char컬럼과 문자상수 비교시 절대 rtrim같은 함수를 사용하지 마세요.
-- rtrim을 안해도 문자상수가 char로 변형되어 비교하므로 ...
-- 만약 아래 예문처럼 인덱스컬럼에 rtrim을 쓰면 인덱스를 사용하지 못하므로 성능 저하!
myemp1 테이블은 2000만건 컬럼구조는 다음과 같다.
desc myemp1
이름 유형
--------------------- -------------
EMPNO NOT NULL NUMBER
ENAME VARCHAR2(100)
DEPTNO VARCHAR2(1)
ADDR VARCHAR2(100)
SAL NUMBER
SUNGBYUL VARCHAR2(1)
alter table myemp1 add ename2 char(100)
-- ename값을 ename2로 이동시킴
update myemp1
set ename2 = ename
-- ename2를 검색조건으로 조회, 일단 인덱스없이 해보자.
-- 68초
select * from myemp1 where ename2 = '마길동444'
-- 이번에는 ename2로 인덱스를 생성한 후 다시 조회하자.
create index idx_myemp1_ename2 on myemp1(ename2)
-- 0초
select * from myemp1 where ename2 = '마길동444'
-- ename2컬럼이 char(100)라고 해서 우측공백을 제거하기 위해 rtrim을 사용하면 안된다
-- 인덱스를 사용하지 못하므로 어마어마한 시간이 걸린다.
-- rtrim을 사용안해도 '마길동444'가 char(100)형태로 자동 변환되어 비교된다.
-- 67초
select * from myemp1 where rtrim(ename2) = '마길동444' (잘못된 쿼리)
열공하세요~
![]() | ![]() ![]() | 12-27 | 2948 | |
![]() | ![]() ![]() | 12-11 | 2158 | |
53 | ![]() ![]() | 03-15 | 2029 | |
52 | ![]() ![]() | 01-31 | 2150 | |
51 | ![]() ![]() | 01-31 | 3130 | |
50 | ![]() ![]() | 01-31 | 1664 | |
49 | ![]() ![]() | 01-19 | 1984 | |
48 | ![]() ![]() | 01-11 | 1850 | |
47 | ![]() ![]() | 01-03 | 2488 | |
46 | ![]() ![]() | 12-27 | 2948 | |
45 | ![]() ![]() | 12-19 | 2064 | |
44 | ![]() ![]() | 12-14 | 2028 | |
43 | ![]() ![]() | 12-11 | 2158 | |
42 | ![]() ![]() | 12-09 | 1669 | |
41 | ![]() ![]() | 12-01 | 1893 | |
40 | ![]() ![]() | 12-01 | 2149 | |
39 | ![]() ![]() | 12-01 | 1533 |
댓글 없음:
댓글 쓰기