2014년 4월 12일 토요일

[구로오라클SQL튜닝]where절에 number, varchar2 자동형변환에 따른 인덱스의 사용유무(where절의 비교대상 컬럼의 데이터 타입이 다르면 number로 자동 형 변환된다.)

[구로오라클SQL튜닝]where절에 number, varchar2 자동형변환에 따른 인덱스의 사용유무(where절의 비교대상 컬럼의 데이터 타입이 다르면 number로 자동 형 변환된다.)

where절에 number, varchar2 자동형변환에 따른 인덱스의 사용유무(where절의 비교대상 컬럼의 데이터 타입이 다르면 number로 자동 형 변환된다.)

SQL> desc myemp1
 이름                                      널?      유형
 ----------------------------------------- -------- ---------------

 EMPNO                                     NOT NULL NUMBER
 ENAME                                              VARCHAR2(100)
 DEPTNO                                             VARCHAR2(1)
 ADDR                                               VARCHAR2(100)
 SAL                                                NUMBER
 SUNGBYUL                                           VARCHAR2(1)

* myemp1 데이터건수 2000만건

* empno는 primary key 인덱스, deptno에도 인덱스가 생성되어 있다.

* where절의 비교대상 컬럼의 데이터 타입이 다르면 number로 자동 형 변환된다.
처음예문은 deptno 인덱스를 사용못하는 형태로 변환된다.(인덱스컬럼에 변환이 생김으로 인덱스사용불가)


-- deptno는 varchar2 컬럼
-- 0초
select count(*) from myemp1  
where deptno = '3'

--14초
select count(*) from myemp1  
where deptno = 3

==> 자동형변환

select count(*) from myemp1  
where to_numner(deptno) = 3


-- empno 컬럼은 number
--0초
select * from myemp1
where empno = 1234

--0초
select * from myemp1
where empno = '1234'

==> 자동형변환

select * from myemp1
where empno = to_number('1234')
오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr)

평일주간(9:30~18:30) 개강
(4/15)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(4/21)C#4.0,ADO.NET,Network 프로그래밍
(4/21)[기업100%환급]SQL기초에서 Schema Object까지
(4/21)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(4/28)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지

평일야간(19:00~22:00) 개강
(4/14)웹퍼블리싱 마스터
(4/15)Spring3.X, MyBatis, Hibernate실무과정
(4/15)C#,ASP.NET마스터
(4/15)SQL초보에서실전전문가까지
(4/22)안드로이드개발자과정

주말(10:00~18:00) 개강
(4/19)웹퍼블리싱 마스터
(4/19)SQL초보에서실전전문가까지
(4/19)C#,ASP.NET마스터
(5/03)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/03)Spring3.X, MyBatis, Hibernate실무과정
(5/03)안드로이드개발자과정


댓글 없음:

댓글 쓰기