create bitmap index 연도별지역별상품매출_bx1 on 연도별지역별상품매출(크기); create bitmap index 연도별지역별상품매출_bx2 on 연도별지역별상품매출(색상); create bitmap index 연도별지역별상품매출_bx3 on 연도별지역별상품매출(출시연도); * Distinct Value 크기 = { NULL, SMALL, MEDIUM, BIG } 색상 = { NULL, RED, GREEN, BLUE, BLACK, WHITE } 출시연도 = { NULL, 2001, 2002, 2003, 2004, 2005 2006, 2007, 2008, 2009, 2010 } * 데이터 분포는 모두 균일 ① select count(*) from 연도별지역별상품매출 where 색상 is null; ② select count(*) from 연도별지역별상품매출 where (크기 = 'SMALL' or 크기 is null) and 색상 = 'GREEN' and 출시연도 = '2010'; ③ select 색상, count(*) from 연도별지역별상품매출 group by 색상; ④ select sum(판매량), sum(판매금액) from 연도별지역별상품매출 where 색상 = 'BLUE';
여기서 1번,3번이 기존 B*TREE 인덱스 사용할 시 TABLE FULL SCAN이 발생한다고 해설에 나와있는데,
1번은 B*TREE인덱스 중 <색상+출시연도> 인덱스를 사용하면 색상이 선행칼럼이고 색상에 값이 나타나지
않은 데이터들만 찾아내서 접근하면 TABLE FULL SCAN은 발생하지 않는게 아닌가..이부분이 헷갈립니다.
그리고 나머지는 출제범위 관련 질문인데,
create table t ( a number, b char(3), c varchar2(10) ) partition by range(a) ( partition p1 values less than(100) , partition p2 values less than(200) , partition p3 values less than(maxvalue) ); create index t_idx on t( b ) local ;
① Global Prefixed Partition Index
② Global NonPrefixed Partition Index
③ Local Prefixed Partition Index
④ Local NonPrefixed Partition Index
----------------------------- 아 래 -------------------------------------- call count cpu elapsed disk query current rows ------ ------- ------ --------- ------ -------- --------- ------- Parse 50000 0.51 0.51 0 0 0 0 Execute 50000 3.18 2.91 5000 10000 15000 50000 Fetch 0 0.00 0.00 0 0 0 0 ------ ------- ------ --------- ------ -------- --------- ------- total 100000 3.70 3.43 5000 10000 15000 50000 --------------------------------------------------------------------------------
가) 3일 이전에 발생한 판매 데이터를 삭제한다. delete from 일별고객별판매집계 where 판매일시 < trunc(sysdate) - 2; 나) 고객별로 집계한 금일 판매 데이터를 추가한다. insert into 일별고객별판매집계 select to_char(sysdate, 'yyyymmdd'), 고객번호, sum(판매량), sum(판매금액) from 판매 where 판매일시 between trunc(sysdate) and trunc(sysdate+1)-1/24/60/60 group by 고객번호; 다) commit; 라) select count(*) from 일별고객별판매집계;
① 가 -> 나 -> 다 -> 라
② 가 -> 다 -> 나 -> 다 -> 라
③ 나 -> 가 -> 다 -> 라
④ 나 -> 다 -> 가 -> 다 -> 라
(이건 SQLD 시험범위인가요;; 올린 문제들 중 특히 궁금합니다)
① Log Buffer = Log Cache
② Online Redo Log = Transaction Log
③ Database Writer = LazyWriter
④ Program Global Area = Procedure Cache
① 바인드 변수를 사용하면 옵티마이저가 칼럼 히스토그램뿐만 아니라 각종 통계정보를 이용하지 못하게 된다.
② 파티션 테이블을 쿼리할 때 파티션 키 칼럼을 바인드 변수로 조회하면 옵티마이저가 파티션 레벨 통계를 활용하지 못한다.
③ 바인드 변수를 사용하면 옵티마이저는 평균 분포를 가정한 실행계획을 수립한다.
④ 바인드 변수 Peeking(또는 Parameter Sniffing) 기능이 도입되면서 칼럼 히스토그램을 사용할 수 있게 되었고, 이 때문에 바인드 변수 사용에 따른 부작용은 거의 해소되었다.
이 문제들 말고 더 있는데.. 위에 올린 문제들은 안봐도 되는거 맞나요?
이 싸이트 맴버 분중 한분이 SQLD시험범위 관련 질문글에 위 문제들이 포함된 기출문제 전부 훑어보는게 좋다고
하시고 튜닝관점에서 공부하라고.. 저는 튜닝공부 안했거든요... 9월 10일이 시험인데 걱정되서 글 써봅니다.
질문이 긴데 조언 부탁드려요;