본문 바로가기

전체 글201

서브쿼리와 뷰(View) 최적화 서브쿼리(Subquery)란?서브쿼리는 다른 SQL문의 일부로 포함되어 실행되는 쿼리입니다. 주로 WHERE, FROM, SELECT 절에서 사용됩니다. 예시:SELECT * FROM employees WHERE department_id = ( SELECT department_id FROM departments WHERE department_name = 'Sales'); 튜닝 관점: 서브쿼리의 위치와 작성 방식에 따라 실행 계획이 크게 달라집니다. 서브쿼리 유형별 성능 특성1. 단일 행 서브쿼리 반환값이 1개인 서브쿼리 (=, , 옵티마이저가 실행 순서를 단순화하기 쉽다 튜닝 포인트 PK나 Unique Index가 걸린 컬럼에서 단일 행 서브쿼리는 매우 빠름2. 다중 행 서브쿼리여.. 2025. 8. 11.
SQL 튜닝 관점에서 보는 인덱스(Index) 구조와 성능 인덱스의 역할 — 왜 튜닝에서 중요한가?SQL 튜닝의 80%는 불필요한 Full Table Scan을 줄이고, 인덱스를 효과적으로 활용하는 데서 시작됩니다. 인덱스 구조와 성능 특성을 이해하면, 실행 계획을 읽고 "왜 인덱스를 안 타는지" 바로 원인을 찾을 수 있습니다.인덱스 내부 구조와 동작 방식1 B-Tree 인덱스 (Balanced Tree)대부분의 RDBMS가 사용하는 기본 인덱스 구조검색, 정렬, 범위 조회에 유리구조: 루트 노드 → 브랜치 노드 → 리프 노드리프 노드에는 실제 데이터의 주소(RowID) 저장 튜닝 포인트 인덱스 범위를 최소화하면 블록 I/O를 줄일 수 있음"선행 컬럼" 조건이 실행 계획의 인덱스 활용 여부를 결정2. 클러스터형 vs 비클러스터형 구분 클러스터형 인덱스 비클러.. 2025. 8. 11.
실행 계획(Execution Plan) 분석 실행 계획이란 SQL 문을 실행할 때 데이터베이스가 어떤 경로로 데이터를 읽고 처리할지를 단계별로 나타낸 설계도입니다. SQL 튜닝에서는 실행 계획을 읽는 능력이 성능 개선의 출발점입니다. 실행 계획의 확인 방법DBMS마다 실행 계획을 확인하는 명령어와 툴이 다릅니다.1. OracleEXPLAIN PLAN FOR ... + SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)SET AUTOTRACE ON (SQL*Plus)SQL Developer의 "Execution Plan" 탭2. MySQLEXPLAIN SELECT ...;EXPLAIN FORMAT=JSON SELECT ...;3. PostgreSQLEXPLAIN SELECT ...;EXPLAIN (ANALYZE, BUFFERS) .. 2025. 8. 10.
옵티마이저(Optimizer)의 이해 SQL 옵티마이저는 데이터베이스에서 SQL 문장을 실행할 때, 가장 효율적인 실행 계획(Execution Plan)을 선택해주는 핵심 엔진입니다. 쉽게 말해, 같은 SQL이라도 실행 속도를 최대한 빠르게 만들어주는 전략가라고 생각하면 됩니다.옵티마이저의 역할옵티마이저는 사용자가 작성한 SQL 문을 그대로 실행하지 않고, 다음 단계를 거쳐 실행 계획을 수립합니다.1. SQL 파싱(Parsing) SQL 문법을 분석하여 문장이 유효한지 확인테이블, 컬럼, 권한 등을 검사2. 실행 계획 생성(Execution Plan Generation) 가능한 여러 가지 접근 경로(인덱스 사용, 풀 테이블 스캔, 조인 방식 등)를 고려각 경로의 비용(Cost)을 계산3. 최적 실행 계획 선택계산된 비용이 가장 낮은 경로를 .. 2025. 8. 10.