[오라클 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/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2948 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2158 | ||
53 | [평일100%환급7건]SQL기초튜닝,힌트,Spring,MyBatis,JAVA&JSP,An… | 03-15 | 2029 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 2150 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 3130 | |
50 | [주말주간]자바&웹,jQUERY,스프링프레임워크,마이바티스 | 01-31 | 1664 | |
49 | [평일주간/야간,주말주간/야간]Spring,MyBatis,Hibernate개발자… | 01-19 | 1984 | |
48 | [평일주간/야간,주말주간/야간]안드로이드개발자과정(Adnroid 교… | 01-11 | 1850 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2488 | |
46 | [100%환급,실무전문]SQL/빅데이터/자바/스프링/웹퍼블리싱/안드… | 12-27 | 2948 | |
45 | [주말야간]개발자를위한PLSQL,SQL튜닝,힌트(토/일) | 12-19 | 2064 | |
44 | [평일주간/야간,주말주간/야간]웹퍼블리싱 마스터(HTML5,CSS3,jQ… | 12-14 | 2028 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 2158 | |
42 | [주말야간]JAVA,JSP,Spring,PLSQL,힌트,웹퍼블리싱,안드로이드,… | 12-09 | 1669 | |
41 | [평일야간,주말야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1893 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 2149 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1533 |
댓글 없음:
댓글 쓰기