2025년 3월 25일 화요일

SQLP #5 - 실기

 

[실기1]


주문 10만건, 주문고객 1만건, 회원 수 10만명

select b.고객번호, b.고객명, a.주문횟수

from (주문고객번호, count(*) as 주문횟수

from 고객

where 주문일자 >= :v_주문시작일자

where 주문일자 < :v_주문종료일자 ) as a,

고객 b

where b.고객주문번호 = a.고객주문번호

group by 주문고객번호

[변경 전 실행계획]

sort group by

[변경 후 실행계획]

hash group by

[문제]

가. 실행계획에서 변경 후 고객_pk, 고객 테이블에서 읽어오는 블록I/O가 증가했는데 이유를 DBMS성능과 관련해서 쓰시오

나. 변경 전 실행계획처럼 나오도록 쿼리를 작성하거나 힌트를 작성하시오

다. 변경 후 실행계획이 hash 조인이 되도록 조인순서와 조인명을 작성하시오.



[실기2]


동일한 구조의 계약적재, 계약 테이블이 있다

계약적재 테이블에는 1일, 한달치 적재가 들어오고 삭제는 한달치 변경분이 된다. 1일적재는 약 10만개, 한달 삭제양은 1000건.

insert랑 delete문을 merge 구문으로 바꾸고 조인 방법과 순서를 명시하시오




MSSQL - Cursor vs Temp Table

#테이블 변수사용의 예 use pubs go declare @tmptable table (     nid int identity(1,1) not null,     title varchar (80) not null ) -- 테이블 변수 선언 inse...