SQLD / 모의고사 정리 5
영진닷컴 이기적 CBT 모의고사 참조
SQL 트레이스를 수집한 결과 Row Source Operation이 다음과 같았다. 가장 우선적으로 검토할 사항으로 올바른 것은? (단, 한 달간 주문 건수는 평균 50만 건이다)
- 고객_IDX 인덱스 컬럼 순서를 조정한다.
- 주문_IDX 인덱스 컬럼 순서를 조정한다.
- 고객_IDX 인덱스에 컬럼을 추가한다.
- 주문_IDX 인덱스에 컬럼을 추가한다.
정답 : 3
- 고객_IDX 인덱스를 읽고 나서 고객 테이블을 액세스하는 횟수는 많으나 대부분 필터링 되고 있음
- 고객에 대한 조건절로 사용된 고객등급이나 연령 컬럼이 인덱스에 포함돼 있지 않아 생기는 현상이므로 고객_IDX에 컬럼을 추가해 주어야 한다.
다음 중 해시 조인(Hash Join)에 대한 설명으로 올바르지 않은 것은?
- 해시 조인은 해시 함수를 사용해서 주소를 계산하고 조인을 수행한다.
- 해시 조인을 할 때는 선행 테이블의 크기가 작아야 한다.
- 해시 조인은 CPU 연산이 많이 발생한다.
- 해시 조인은 랜덤 액세스(Random Access)로 인하여 부하가 발생한다.
정답 : 4
- 해시 조인은 해시 함수를 사용하므로 CPU를 많이 사용하지만, 랜덤 액세스는 발생하지 않음
- 랜덤 액세스 = Nested Loop
다음 주어진 테이블에서 아래와 같은 결괏값을 반환하도록 아래의 SQL문의 빈칸에 들어갈 올바른 것을 고르시오.
- RANK()
- NTILE()
- ROW_NUMBER()
- DENSE_RANK()
정답 : 4
- RANK와 DENSE_RANK 모두 동일 순위에 대해 중복 순위를 부여하지만 RANK의 경우 다음 순위를 건너뜀
- RANK 일 때 = 1, 2, 2, 4
- NTILE() : 결과 집합을 N개의 그룹으로 나누고 각 행에 해당 그룹 번호를 부여함
- ROW_NUMBER() : 결과 집합의 각 행에 대해 고유한 번호를 부여함, 순서 상관
Case 문에서 ELSE를 생략하면 어떤 현상이 발생되는가?
- ELSE를 생략하고 작성하면 실행 시 ELSE 조건이 참이 되며 오류가 발생한다.
- ELSE 조건이 만족하게 되면 공집합이 리턴된다.
- ELSE 조건을 만족하게 되면 무시된다.
- ELSE 조건이 만족하게 되면 NULL이 된다.
정답 : 4
- CASE 문에서 ELSE 조건을 생략하면 NULL 리턴
Hash Join 기법에 대한 설명으로 옳은 것은?
- 조인 작업을 수행할 때 결과 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋다.
- Hash Join은 해시 함수를 이용하여 조인을 수행하기 때문에 ‘=’로 수행하는 조인인 동등 조건 이외에도 사용할 수 있다.
- 해시 테이블을 저장할 때 메모리에 적재할 수 있는 영역의 크기보다 커지면 초과한 크기를 제외한 영역 만큼 메모리에 적재한다.
- Hash Join은 조인 컬럼의 인덱스가 존재하지 않으면 사용할 수 없는 기법이다.
정답 : 1
- Hash Join의 특징
- Hash Join은 조인 컬럼의 인덱스가 존재하지 않을 경우에도 사용 가능
- Hash Join은 해시 함수를 사용하여 조인을 수행하기 때문에 ‘=’로 수행하는 조인인 동등조건에서만 사용 가능
- 해시 함수가 적용될 때 동일한 값은 항상 같은 값으로 해시됨을 보장함
- Hash Join 작업을 수행하기 위해서 해시 테이블을 메모리에 생성해야 함
- 해시 테이블을 저장할 때 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 저장함
- Hash Join을 수행할 때는 결과 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋음
- 선행 테이블을 Build Input이라고 하며 후행 테이블은 Prove Input이라고 함
다음의 SQL문 실행 결과는 무엇인가?
1
SELECT * FROM dual WHERE NULL = NULL;
- NULL
- 1
- X
- 공집합
정답 : 4
- NULL과 NULL을 비교할 수 없음
- NULL값 조회는 is [NOT] NULL
- 아무것도 출력 안되기 때문에 공집합
이 블로그는 저작권자의 CC BY 4.0 라이센스를 따릅니다.