2014년 4월 17일 목요일

[B*Tree, Bitmap인덱스 성능비교,오라클인덱스] [오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육] myemp1 테이블은 2000만건의 데이터 건수를 가지고 있고 컬럼은 6개 정도. deptno 컬럼에는 0,1,2,3,4 다섯가지 정도의 값들이 분포되어 있다.(분포도 20%) OR쿼리를 사용했을 때 인덱스없을때, B*TREE 인덱스 있을 때, 비트맵 인덱스를 사용할 때와 비교해 보았다. B*Tree인덱스인 경우 11g에서 index 힌트를 주지 않으면 index fast full scan 했으며 index 힌트를 사용하여 만든 index range scan 보다 성능이 좋지는 않았다. 결과상 비트맵인덱스가 좋지만 작은 DML이 있는 테이블이라면 조심해야 한다. 결과를 확인해 보자. 1. 인덱스 없을 때 drop index IDX_MYEMP1_DEPTNO drop index bidx_myemp1_deptno --17초 select count(*) from myemp1 where deptno = 0 or deptno = 4 or deptno = 2 -- 17초 select count(*) from myemp1 where deptno != 0 2. B*Tree인덱스 있을 때(index_ffs) create index IDX_MYEMP1_DEPTNO on myemp1(deptno) - 0.74초 select count(*) from myemp1 where deptno = 0 or deptno = 4 or deptno = 2 -- 2.3초(index fast full scan) select count(*) from myemp1 where deptno != 0 3. Bitmap인덱스를 이용 drop index BIDX_MYEMP1_DEPTNO(0.03초) create bitmap index bidx_myemp1_deptno on myemp1(deptno) -- 0.03초 select count(*) from myemp1 where deptno = 0 or deptno = 4 or deptno = 2 -- 0.05초 select count(*) from myemp1 where deptno != 0 [출처] 오라클자바커뮤니티 - http://www.oraclejavanew.kr/bbs/board.php?bo_table=LecOrccleTun&wr_id=62 오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr) 평일주간(9:30~18:20) 개강 (4/22)[기업100%환급]PL/SQL,ORACLE HINT,TUNING (4/29)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 (4/29)C#4.0,ADO.NET,Network 프로그래밍 (5/12)[기업100%환급]Spring ,MyBatis,Hibernate실무과정 (5/12)[기업100%환급]SQL기초에서 Schema Object까지 평일야간(19:00~21:50) 개강 (4/22)웹퍼블리싱 마스터 (4/23)안드로이드개발자과정 (4/24)Spring3.X, MyBatis, Hibernate실무과정 (5/16)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정 (5/16)JAVA&WEB프레임워크실무과정 (5/16)C#,ASP.NET마스터 (5/16)SQL초보에서실전전문가까지 주말(10:00~18:00) 개강 (4/20)웹퍼블리싱 마스터 (5/03)Spring3.X, MyBatis, Hibernate실무과정 (5/03)안드로이드개발자과정 (5/17)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지 (5/17)JAVA,JDBC,JSP,Servlet,Ajax,jQUERY,Spring,MyBatis,Hibernate (5/17)SQL초보에서실전전문가까지 (5/17)개발자를위한PLSQL,SQL튜닝,힌트 (5/17)C#,ASP.NET마스터 주말저녁(18:30~22:20) 개강 (5/17)JAVA,JDBC,JSP,Servlet,Ajax,jQUERY,Spring,MyBatis,Hibernate (5/17)SQL기초에서 Schema Object까지

[B*Tree, Bitmap인덱스 성능비교,오라클인덱스] [오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]
 
myemp1 테이블은 2000만건의 데이터 건수를 가지고 있고 컬럼은 6개 정도.
deptno 컬럼에는 0,1,2,3,4 다섯가지 정도의 값들이 분포되어 있다.(분포도 20%)

OR쿼리를 사용했을 때 인덱스없을때, B*TREE 인덱스 있을 때, 비트맵 인덱스를 사용할 때와 비교해 보았다. B*Tree인덱스인 경우 11g에서 index 힌트를 주지 않으면 index fast full scan 했으며 index 힌트를 사용하여 만든 index range scan 보다 성능이 좋지는 않았다.
 
결과상 비트맵인덱스가 좋지만 작은 DML이 있는 테이블이라면 조심해야 한다.

 
결과를 확인해 보자.

1. 인덱스 없을 때  
drop index IDX_MYEMP1_DEPTNO
drop index bidx_myemp1_deptno
--17초
select count(*) from myemp1
where deptno = 0
   or deptno = 4
   or deptno = 2
   
-- 17초   
select count(*) from myemp1
where deptno != 0

2. B*Tree인덱스 있을 때(index_ffs) 
create index IDX_MYEMP1_DEPTNO on myemp1(deptno)

- 0.74초
select
       count(*) from myemp1
where deptno = 0
   or deptno = 4
   or deptno = 2

-- 2.3초(index fast full scan)  
select
       count(*) from myemp1
where deptno != 0
   
   
3. Bitmap인덱스를 이용
drop index BIDX_MYEMP1_DEPTNO(0.03초)
create bitmap index bidx_myemp1_deptno on myemp1(deptno)

-- 0.03초
select
       count(*) from myemp1
where deptno = 0
   or deptno = 4
   or deptno = 2
   
--  0.05초  
select
       count(*) from myemp1
where deptno != 0

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

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

평일야간(19:00~21:50) 개강
(4/22)웹퍼블리싱 마스터
(4/23)안드로이드개발자과정
(4/24)Spring3.X, MyBatis, Hibernate실무과정
(5/16)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(5/16)JAVA&WEB프레임워크실무과정
(5/16)C#,ASP.NET마스터
(5/16)SQL초보에서실전전문가까지

주말(10:00~18:00) 개강
(4/20)웹퍼블리싱 마스터
(5/03)Spring3.X, MyBatis, Hibernate실무과정
(5/03)안드로이드개발자과정
(5/17)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/17)JAVA,JDBC,JSP,Servlet,Ajax,jQUERY,Spring,MyBatis,Hibernate
(5/17)SQL초보에서실전전문가까지
(5/17)개발자를위한PLSQL,SQL튜닝,힌트
(5/17)C#,ASP.NET마스터

주말저녁(18:30~22:20) 개강
(5/17)JAVA,JDBC,JSP,Servlet,Ajax,jQUERY,Spring,MyBatis,Hibernate
(5/17)SQL기초에서 Schema Object까지


댓글 없음:

댓글 쓰기