[오라클 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' (잘못된 쿼리)
열공하세요~
[개발실무&환급100%]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… | 12-27 | 2380 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1727 | ||
53 | [평일100%환급]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷넷,S… | 03-15 | 1548 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 1641 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 2196 | |
50 | [평일주간야간,주말]C기본&자료구조,알고리즘 | 01-31 | 1300 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… | 01-19 | 1602 | |
48 | [평일야간,주말]안드로이드개발자과정(Android기초실무) | 01-11 | 1443 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 1991 | |
46 | [개발실무&환급100%]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… | 12-27 | 2380 | |
45 | [기업100%환급]자바웹개발기초과정(JAVA,JDBC,JSP,Servlet,Aajx,… | 12-19 | 1710 | |
44 | [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… | 12-14 | 1688 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1727 | |
42 | [기업100%환급]웹퍼블리싱마스터(HTML5,CSS3,JavaScript,jQUERY) | 12-09 | 1371 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1596 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 1770 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1248 |
댓글 없음:
댓글 쓰기