Oracle PUSH_PRED 힌트

Oracle PUSH_PRED 힌트

PUSH_PRED 힌트는 메인 쿼리의 WHERE 조건을 서브쿼리 내부로 밀어넣어 서브쿼리에 대한 프레디케이트 푸시다운(Predicate Pushdown) 을 강제하는 힌트입니다. 특정 상황에서는 실행 성능을 최적화할 수 있습니다. ✅ 기본 사용법 SELECT /*+ PUSH_PRED */ *FROM ( SELECT emp.*, dept.dname FROM emp JOIN dept ON emp.deptno = dept.deptno) subWHERE sub.sal > 3000; 위와 같은 구조에서 PUSH_PRED 힌트를 사용하면 sub.sal … Read more

정규표현식(Regex) in SQL

정규표현식(Regex) in SQL

1. 정규표현식(Regex)이란? 정규표현식은 특정 패턴을 가진 문자열을 검색하거나 추출, 교체할 때 사용하는 표현 방식입니다.SQL에서는 주로 데이터를 검색하거나 필터링할 때 활용됩니다. 대표적으로 다음 함수가 사용됩니다. 2. SQL 주요 DB별 정규표현식 함수 예시 데이터베이스 설명 및 예시 Oracle WHERE REGEXP_LIKE(column, ‘[A-Z]{3}[0-9]{3}’) MySQL WHERE column REGEXP ‘^[A-Za-z]+[0-9]+$’ PostgreSQL WHERE column ~* ‘pattern’ (대소문자 구분하지 않음) 3. 정규표현식 주요 … Read more

고급 조인 기법(Advanced Join Techniques)

고급 조인 기법(Advanced Join Techniques)

데이터베이스에서 조인은 데이터를 효율적으로 결합하는 핵심 기능입니다.기본적인 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 외에도 성능과 최적화를 위한 다양한 고급 조인 기법이 존재합니다. 1. 고급 조인 기법 개요 조인 기법 특징 주요 활용 사례 Nested Loop Join 작은 테이블과 인덱스 사용 시 효율적 인덱스 활용이 가능한 경우 Hash Join 등가 조인(=)에 적합, 대용량 … Read more

스칼라 서브쿼리(Scalar Subquery)

스칼라 서브쿼리(Scalar Subquery)

스칼라 서브쿼리(Scalar Subquery)는 단일 값을 반환하는 서브쿼리입니다.즉, SELECT 문이 실행될 때 하나의 행과 하나의 열(단일 값)만 반환하는 서브쿼리를 의미합니다. 1. 스칼라 서브쿼리의 특징 ✔ 반환 값이 반드시 하나(1개 행, 1개 열)✔ 메인 쿼리의 컬럼과 함께 사용할 수 있음✔ 각 행마다 실행될 수 있어 성능 저하 가능✔ NULL을 반환할 수도 있음 2. 스칼라 서브쿼리의 사용 예제 … Read more

Sort Merge Join (정렬 병합 조인)

Sort Merge Join (정렬 병합 조인)

Sort Merge Join(SM 조인, 정렬 병합 조인)은 두 개의 정렬된 테이블을 병합하여 조인하는 방식입니다.주로 등가 조인(=)뿐만 아니라 범위 조인(<, >, BETWEEN 등)에서도 사용될 수 있으며, 대용량 데이터 조인에 적합합니다. 1. Sort Merge Join 개념 Sort Merge Join은 두 개의 입력 테이블을 정렬(Sort)한 후, 정렬된 데이터를 병합(Merge)하여 조인을 수행합니다. 2. Sort Merge Join의 동작 방식 SM … Read more

NL 조인(Nested Loop Join)

NL 조인(Nested Loop Join)

Nested Loop Join(NL 조인, 중첩 루프 조인)은 두 개의 테이블을 조인할 때 가장 기본적인 방법으로,하나의 테이블(외부 테이블, Outer Table)의 각 행을 반복하며 다른 테이블(내부 테이블, Inner Table)과 비교하는 방식입니다. NL 조인은 인덱스가 있는 경우 효과적이며, 소규모 데이터셋에서 빠르게 실행될 수 있지만, 대용량 데이터에서는 성능이 저하될 수 있습니다. 1. NL 조인의 개념 NL 조인은 반복문(Looping)을 활용한 … Read more

해시 조인(Hash Join)

해시 조인(Hash Join)

해시 조인(Hash Join)은 데이터베이스에서 두 개의 테이블을 조인할 때 사용되는 조인 알고리즘 중 하나로, 특히 대용량 데이터셋을 다룰 때 성능이 뛰어난 방법입니다.일반적으로 등가 조인(=)에서 사용되며, 테이블 크기가 크거나 인덱스가 없을 때 효율적으로 동작합니다. 1. 해시 조인의 개념 해시 조인은 두 개의 테이블에서 조인 키 값을 기반으로 해시 테이블을 생성하여 조인하는 방식입니다.일반적으로 Nested Loop Join(중첩 루프 … Read more

SQL 윈도우 함수(Window Function)

SQL 윈도우 함수(Window Function)

SQL 윈도우 함수(Window Function) 는 데이터베이스에서 행(row) 단위로 연산을 수행하면서도, 기존 행(row)들을 그대로 유지하는 함수입니다.GROUP BY와 달리 개별 행을 제거하지 않고 그룹 내에서 연산을 수행할 수 있습니다. 🏗 1. 윈도우 함수의 특징 ✅ 기존 행을 유지하면서 그룹별 연산 수행 ✅ OVER() 절을 사용하여 그룹을 정의 ✅ 대표적인 활용 예시 📊 2. 윈도우 함수 vs 그룹 … Read more

계층형 쿼리(Hierarchical Query)

계층형 쿼리(Hierarchical Query)

1. 계층형 쿼리(Hierarchical Query)란? 계층형 쿼리(Hierarchical Query)는 부모-자식 관계(트리 구조)를 가진 데이터를 조회하는 SQL 기법입니다. 일반적인 SQL 쿼리는 평면적(Flat) 데이터를 조회하는 반면, 계층형 쿼리는 트리 구조(Tree Structure)를 탐색할 수 있습니다. 예제: 2. 기본 문법 SELECT [컬럼들]FROM 테이블START WITH [루트 조건]CONNECT BY [계층적 관계 정의][ORDER SIBLINGS BY 컬럼명]; 3. 예제 데이터 (EMPLOYEES 테이블) 테이블 구조 CREATE … Read more

Snapshot too old(ORA-01555) in Oracle

Snapshot too old(ORA-01555) in Oracle

Oracle “Snapshot too old” 오류와 해결 방법 📌 오류 개요 Oracle에서 “Snapshot too old” 오류는 UNDO 영역 부족으로 인해 발생하는 오류입니다.특히 긴 시간 실행되는 쿼리(대량 데이터 조회, 분석 쿼리 등)에서 많이 발생합니다. (쿼리가 오래 수행되는 동안 UNDO영역에 기존 수행중이던 쿼리에 대한 데이터가 삭제됨) 1. “Snapshot too old” 오류 원인 오라클은 트랜잭션의 일관성을 유지하기 위해 UNDO … Read more