[SQLD합격] 실행 계획과 성능 기초 이해
SQLD에서는 인덱스, 실행 순서, 성능 관련 문제가 꾸준히 출제된다. 이 단계에서는 인덱스 특징, Full Scan과 Index Scan 차이, 옵티마이저 개념 등을 쉽고 실전적으로 이해한다. JOIN 수행 방식과 실행 계획 해석 기초도 함께 익히며, 단순 SQL 작성이 아니라 “효율적인 SQL” 관점까지 확장한다.
수록 문항
총 92개아래 문항들은 이 학습지에 수록된 카드입니다. 각 카드는 문제(Q)와 답(A)으로 구성되어 있으며, 일부 카드에는 추가 해설이 포함되어 있습니다. 로그인하면 이 학습지를 내 계정으로 복사해 카드를 한 장씩 넘기며 반복 학습할 수 있고, 숙달한 카드는 완료 표시하여 다음 세션에서 제외할 수 있습니다.
-
#1Q.
SORT MERGE JOIN
A.정렬 후 병합 방식으로 데이터를 JOIN한다
양쪽 데이터를 정렬한 뒤 비교한다. -
#2Q.
인덱스
A.데이터 조회 속도를 높이기 위한 별도의 검색 구조다
책의 목차처럼 원하는 데이터를 빠르게 찾기 위해 사용한다. -
#3Q.
풀 테이블 스캔
A.테이블 전체 데이터를 처음부터 끝까지 읽는 방식이다
조건에 맞는 데이터를 찾기 위해 모든 행을 검사한다. -
#4Q.
인덱스 스캔
A.인덱스를 이용해 필요한 데이터만 빠르게 조회하는 방식이다
조건 컬럼에 인덱스가 있으면 성능이 향상될 수 있다. -
#5Q.
옵티마이저
A.가장 효율적인 실행 계획을 선택하는 데이터베이스 내부 기능이다
SQL 실행 방법을 자동으로 결정한다. -
#6Q.
실행 계획
답은 로그인 후 확인 -
#7Q.
선행 컬럼
답은 로그인 후 확인 -
#8Q.
복합 인덱스
답은 로그인 후 확인 -
#9Q.
단일 인덱스
답은 로그인 후 확인 -
#10Q.
고유 인덱스
답은 로그인 후 확인 -
#11Q.
비고유 인덱스
답은 로그인 후 확인 -
#12Q.
클러스터형 인덱스
답은 로그인 후 확인 -
#13Q.
비클러스터형 인덱스
답은 로그인 후 확인 -
#14Q.
인덱스 탐색
답은 로그인 후 확인 -
#15Q.
인덱스 범위 스캔
답은 로그인 후 확인 -
#16Q.
인덱스 유니크 스캔
답은 로그인 후 확인 -
#17Q.
인덱스 풀 스캔
답은 로그인 후 확인 -
#18Q.
인덱스 스킵 스캔
답은 로그인 후 확인 -
#19Q.
인덱스 정렬 효과
답은 로그인 후 확인 -
#20Q.
인덱스 생성
답은 로그인 후 확인 -
#21Q.
인덱스 삭제
답은 로그인 후 확인 -
#22Q.
기본키 인덱스
답은 로그인 후 확인 -
#23Q.
외래키 인덱스
답은 로그인 후 확인 -
#24Q.
선택도
답은 로그인 후 확인 -
#25Q.
카디널리티
답은 로그인 후 확인 -
#26Q.
히스토그램
답은 로그인 후 확인 -
#27Q.
통계 정보
답은 로그인 후 확인 -
#28Q.
비용 기반 옵티마이저
답은 로그인 후 확인 -
#29Q.
규칙 기반 옵티마이저
답은 로그인 후 확인 -
#30Q.
드라이빙 테이블
답은 로그인 후 확인 -
#31Q.
드리븐 테이블
답은 로그인 후 확인 -
#32Q.
중첩 루프 JOIN
답은 로그인 후 확인 -
#33Q.
정렬 병합 JOIN
답은 로그인 후 확인 -
#34Q.
해시 JOIN
답은 로그인 후 확인 -
#35Q.
NL JOIN
답은 로그인 후 확인 -
#36Q.
HASH JOIN
답은 로그인 후 확인 -
#37Q.
조인 순서
답은 로그인 후 확인 -
#38Q.
조인 조건
답은 로그인 후 확인 -
#39Q.
카테시안 곱
답은 로그인 후 확인 -
#40Q.
SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id
답은 로그인 후 확인 -
#41Q.
SELECT * FROM employees WHERE employee_id = 100
답은 로그인 후 확인 -
#42Q.
SELECT * FROM employees WHERE first_name LIKE 'K%'
답은 로그인 후 확인 -
#43Q.
SELECT * FROM employees WHERE first_name LIKE '%K'
답은 로그인 후 확인 -
#44Q.
SELECT * FROM employees WHERE salary > 5000
답은 로그인 후 확인 -
#45Q.
SELECT * FROM employees ORDER BY employee_id
답은 로그인 후 확인 -
#46Q.
SELECT * FROM employees WHERE department_id IN (10,20,30)
답은 로그인 후 확인 -
#47Q.
SELECT COUNT(*) FROM employees
답은 로그인 후 확인 -
#48Q.
SELECT department_id, COUNT(*) FROM employees GROUP BY department_id
답은 로그인 후 확인 -
#49Q.
SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.location_id = 100
답은 로그인 후 확인 -
#50Q.
SELECT * FROM orders WHERE order_date BETWEEN TO_DATE('20250101','YYYYMMDD') AND TO_DATE('20251231','YYYYMMDD')
답은 로그인 후 확인 -
#51Q.
SELECT * FROM employees WHERE department_id = 10 AND salary > 5000
답은 로그인 후 확인 -
#52Q.
SELECT * FROM employees WHERE UPPER(first_name) = 'KIM'
답은 로그인 후 확인 -
#53Q.
SELECT * FROM employees WHERE hiredate = TO_DATE('20250515','YYYYMMDD')
답은 로그인 후 확인 -
#54Q.
SELECT * FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id
답은 로그인 후 확인 -
#55Q.
SELECT * FROM employees WHERE ROWNUM <= 10
답은 로그인 후 확인 -
#56Q.
SELECT * FROM employees ORDER BY salary DESC
답은 로그인 후 확인 -
#57Q.
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 200
답은 로그인 후 확인 -
#58Q.
SELECT DISTINCT department_id FROM employees
답은 로그인 후 확인 -
#59Q.
SELECT employee_id, department_id FROM employees WHERE department_id = 10
답은 로그인 후 확인 -
#60Q.
TABLE ACCESS FULL
답은 로그인 후 확인 -
#61Q.
INDEX RANGE SCAN
답은 로그인 후 확인 -
#62Q.
INDEX UNIQUE SCAN
답은 로그인 후 확인 -
#63Q.
TABLE ACCESS BY INDEX ROWID
답은 로그인 후 확인 -
#64Q.
SORT ORDER BY
답은 로그인 후 확인 -
#65Q.
HASH GROUP BY
답은 로그인 후 확인 -
#66Q.
SELECT * FROM employees WHERE department_id = 10 ORDER BY salary DESC
답은 로그인 후 확인 -
#67Q.
SELECT * FROM employees WHERE NVL(commission_pct,0) > 0
답은 로그인 후 확인 -
#68Q.
SELECT * FROM employees WHERE department_id + 1 = 11
답은 로그인 후 확인 -
#69Q.
SELECT * FROM employees WHERE TO_CHAR(hiredate,'YYYY') = '2025'
답은 로그인 후 확인 -
#70Q.
SELECT * FROM employees WHERE hiredate >= TO_DATE('20250101','YYYYMMDD') AND hiredate < TO_DATE('20260101','YYYYMMDD')
답은 로그인 후 확인 -
#71Q.
SELECT /*+ INDEX(employees idx_emp_dept) */ * FROM employees WHERE department_id = 10
답은 로그인 후 확인 -
#72Q.
SELECT /*+ FULL(employees) */ * FROM employees
답은 로그인 후 확인 -
#73Q.
SELECT /*+ USE_HASH(d) */ * FROM employees e JOIN departments d ON e.department_id = d.department_id
답은 로그인 후 확인 -
#74Q.
SELECT /*+ USE_NL(d) */ * FROM employees e JOIN departments d ON e.department_id = d.department_id
답은 로그인 후 확인 -
#75Q.
SELECT /*+ LEADING(e d) */ * FROM employees e JOIN departments d ON e.department_id = d.department_id
답은 로그인 후 확인 -
#76Q.
SELECT * FROM employees WHERE EXISTS (SELECT 1 FROM departments d WHERE e.department_id = d.department_id)
답은 로그인 후 확인 -
#77Q.
SELECT * FROM employees WHERE department_id IN (SELECT department_id FROM departments)
답은 로그인 후 확인 -
#78Q.
SELECT * FROM employees WHERE NOT EXISTS (SELECT 1 FROM departments d WHERE e.department_id = d.department_id)
답은 로그인 후 확인 -
#79Q.
SELECT * FROM employees WHERE department_id NOT IN (SELECT department_id FROM departments)
답은 로그인 후 확인 -
#80Q.
SELECT employee_id, salary FROM employees WHERE salary = (SELECT MAX(salary) FROM employees)
답은 로그인 후 확인 -
#81Q.
SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 5000
답은 로그인 후 확인 -
#82Q.
SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE e.salary > 5000
답은 로그인 후 확인 -
#83Q.
SELECT * FROM employees WHERE employee_id = 100 FOR UPDATE
답은 로그인 후 확인 -
#84Q.
COMMIT
답은 로그인 후 확인 -
#85Q.
ROLLBACK
답은 로그인 후 확인 -
#86Q.
SAVEPOINT sp1
답은 로그인 후 확인 -
#87Q.
ROLLBACK TO sp1
답은 로그인 후 확인 -
#88Q.
트랜잭션
답은 로그인 후 확인 -
#89Q.
원자성
답은 로그인 후 확인 -
#90Q.
일관성
답은 로그인 후 확인 -
#91Q.
격리성
답은 로그인 후 확인 -
#92Q.
지속성
답은 로그인 후 확인
처음 5개의 답만 미리 보여드려요. 전체 92개 항목은 로그인 후 학습할 수 있습니다.
이 학습지를 효과적으로 활용하는 방법
- ① 처음에는 전체 문항을 한 번씩 훑어보며 익숙한 항목과 낯선 항목을 분류하세요.
- ② 학습 세션에서 "안 외운 문항만" 옵션으로 아직 숙달하지 못한 카드에 집중합니다.
- ③ 랜덤 순서 학습을 활용해 카드 순서에 의존한 암기를 방지하세요.
- ④ 키보드 단축키(1·2·A·D·Space)를 쓰면 한 손으로도 빠르게 복습할 수 있습니다.
- ⑤ 복사(Fork)한 학습지에는 자유롭게 나만의 해설이나 예문을 덧붙여 내 스타일로 다듬어 보세요.