본문 바로가기

자격증/SQLP11

서술형문제 6 야간배치 SQL 튜닝 주문, 배송, 고객 정보를 읽어 주문배송 테이블에 입력하는 야간 배치(Batch) 프로그램을 튜닝하려고 한다. 대상 주문 데이터는 2016년 6월부터 8월까지 3개월치다. 월별 주문건수는 1,000만건이다. 월별 배송건수는 900만건이다. 배송은 주문이 완료된 후에 시작된다. 고객 수는 500만명이다. 주문 : 주문인자 기준 월단위 Range 파티션 배송 : 배송일자 기준 월단위 Range 파티션 주문 테이블 주문_PK : 주문번호 주문_N1 : 주문상태코드 + 주문일자 (Local Partition) 주문_N2 : 주문고객번호 + 주문일자 (Local Partition) 배송 테이블 배송_PK : 배송번호 배송_N1 : 주문번호 + 배송일자 (Local Partition) 배송_N2 : 배송일자 + 배.. 2021. 8. 16.
서술형문제5. 페이징처리 SQL 작성법 고객상태코드 = 'AC'인 고객을 조회해서 등록일시,고객번호 순으로 출력하고자 한다. 출력하고자 하는 항목은 아래 그리드(Grid)와 같고, 가장 우측 최근접속일시는 최근 한 달 이내 마지막 접속일시를 의미하며, 접속이력이 없으면 Null을 출력한다. ※한달 전 날짜를 구하는 함수 -> trunc(add_months(sysdate,-1)) '조회/다음' 버튼을 누르면, 매번 20건씩 데이터를 읽어 그리드 화명에 추가(Append)하는 방식으로 화면 페이징 처리를 구현해야 하고, '파일로 출력' 버튼을 누르면 전체 조회 데이터를 파일로 일괄 저장하도록 구현해야 한다. 두 조회 버튼에 대한 1.최적의 SQL을 각각 작성하고, 2.최적의 구성안을 제시하시오 요건 1. 각 조회버튼에 대한 성능요건 1) 조회/다.. 2021. 8. 14.
서술형문제4 SQL 작성 주문 테이블 구조는 아래와 같으며, 파티셔닝 하지 않았다. 하루 주문 건수는 평균 2만 건이며, 10년치 데이터가 저장돼 있다. 주문 데이터를 조회하는 화면은 아래와 같다. 고객번호는 입력하지 않을 수 있지만, 주문일자는 항상 입력해야 한다. 주문일자로는 보통 3일을 입력하며, 최대 1주일까지 입력할 수 있다. 1.조회버튼을 누를 때 수행할 최적의 SQL을 작성하시오. 개발 정책 상 Dynamic SQL은 사용할 수 없다. 주문일시 기준 역순으로 정렬해야 하며, 부분범위처리는 허용되지 않는다. 즉 조회된 결과 집합 전체를 그리드(Grid)에 출력해야 한다. 2.최적의 인덱스 구성안을 제시하시오. 화면 튜닝 Point 1.전체범위처리로 처리해야 함 2. 고객번호는 입력하지 않을 수 있지만 주문일자는 항상 .. 2021. 8. 13.
서술형문제3 전체범위처리 SQL 작성 문제 같은 데이터를 두번 읽지 않고서 같은 결과집합을 출력하도록 아래 두 SQL을 각각 작성하시오. (단, 부분범위처리가 불가능한 상황 전체범위처리 기준으로 튜닝할 것) -'주문일자'의 데이터 타입은 문자형 8자리 - 거래 업체는 10,000개 - 월평균 주문건수는 100만 건 SQL 1 select b.주문번호,b.업체번호,b.주문일자,b.주문금액,b.총주문횟수,a.평균주문금액,a.최대주문금액 from ( select 업체번호,count(*) 총주문횟수, avg(주문금액) 평균주문금액, max(주문금액) 최대주문금액 from 주문 where 주문일자 like '201509%' group by 업체번호 ) a, 주문 b where b.업체번호 = a.업체번호 and b.주문일자 like '201509%'.. 2021. 8. 12.