database/oracle15 🌳 15편. PARTITION 테이블과 대용량 테이블 설계 전략 🌳 15편. PARTITION 테이블과 대용량 테이블 설계 전략수억 건 이상의 데이터를 처리하는 시스템에서는 단일 테이블로만 데이터를 관리하면 성능 저하, 인덱스 병목, 관리 부담이 발생할 수 있습니다.Oracle의 PARTITION 기능을 활용하면 테이블을 논리적으로 나누어 성능과 관리성을 향상시킬 수 있습니다.이번 글에서는 파티션 테이블의 구조, 유형, 인덱스 설계, 실무 적용 전략을 정리합니다.🧱 1. 파티션이란?파티션 테이블은 하나의 테이블을 여러 물리적 세그먼트로 분할하여 관리하는 구조입니다.사용자는 단일 테이블처럼 조회하지만, Oracle은 내부적으로 분할된 파티션별로 처리하므로 속도와 효율이 크게 향상됩니다.🧩 2. 파티션 유형 유형 설명 예시 .. 2025. 5. 6. 🌳 14편. 실무 고급 SQL 패턴 모음 🌳 14편. 실무 고급 SQL 패턴 모음현업에서는 단순 SELECT 외에도 그룹 문자열 합치기, 순위 처리, 조건부 출력, JSON 처리와 같은 고급 SQL 기능이 자주 쓰입니다.이번 글에서는 다음과 같은 고급 SQL 패턴들을 예제와 함께 소개합니다. LISTAGG – 문자열 그룹 집계 RANK, DENSE_RANK – 순위 구하기 CASE WHEN – 조건 분기 ROLLUP – 소계/총계 자동 집계 JSON_OBJECT – JSON 생성🔠 1. LISTAGG – 문자열을 그룹으로 묶어 출력SELECT DEPTNO, LISTAGG(ENAME, ', ') WITHIN GROUP (ORDER BY ENAME) AS EMP_NAMESFROM EMPGROUP BY DEPTNO;→ 부서별 .. 2025. 5. 6. 🌳 13편. 오라클 커서(Cursor)와 BULK COLLECT 🌳 13편. 오라클 커서(Cursor)와 BULK COLLECTPL/SQL에서는 SELECT 결과를 하나씩 처리하거나, 다량의 데이터를 메모리로 가져와 반복 처리할 때 Cursor와 BULK COLLECT를 사용합니다.이번 글에서는 명시적/암시적 커서, FOR LOOP, BULK COLLECT, LIMIT, FORALL 등을 예제와 함께 설명합니다.🔍 커서(Cursor)란?커서는 SQL 실행 결과 집합을 가리키는 포인터입니다. 암시적 커서: SELECT INTO, INSERT, UPDATE 등 일반 SQL 사용 시 자동 생성 명시적 커서: 개발자가 직접 정의하고 반복 처리에 사용🧷 암시적 커서 예제DECLARE v_cnt NUMBER;BEGIN SELECT COUNT(*) INTO v_cnt.. 2025. 5. 6. 🌳 12편. 동적 SQL과 EXECUTE IMMEDIATE 🌳 12편. 동적 SQL과 EXECUTE IMMEDIATE고정된 쿼리 대신 조건에 따라 SQL 문장을 동적으로 생성해야 하는 상황이 많습니다. 동적 SQL(Dynamic SQL)이란, 실행 시점에 SQL 문을 동적으로 구성하거나 실행하는 방식을 의미하며, 일반적인 정적 SQL(고정된 쿼리)과 달리 쿼리 내용을 문자열로 조합하거나 변수에 따라 문장을 바꾸는 것이 특징입니다.사용하는 DBMS마다 방식은 조금씩 다르지만, 주요 방식은 다음과 같습니다:✅ 1. EXECUTE IMMEDIATE: 대부분의 DBMS가 지원하는 대표적인 동적 SQL 실행 방식✅ 2. PREPARE / EXECUTE: MySQL, PostgreSQL, SQL Server 등, 실행 계획을 먼저 준비한 뒤 실행하는 구조✅ 3. DBMS.. 2025. 5. 6. 🌳 11편. WITH절과 재귀 쿼리 (WITH RECURSIVE) 🌳 11편. WITH절과 재귀 쿼리 (WITH RECURSIVE)Oracle SQL에서 WITH절은 복잡한 서브쿼리를 공통 테이블 표현식(CTE)으로 정의하고 재사용하는 기능입니다.또한 Oracle 11g부터는 재귀 CTE를 통해 계층형 데이터를 CONNECT BY 없이 조회할 수 있게 되었습니다.이번 글에서는 WITH의 기본 구조와 재귀 쿼리 구현 방식을 예제 중심으로 설명합니다.📦 WITH절 기본 구조WITH절은 SQL 내부에서 임시 뷰(View)처럼 서브쿼리를 정의하고, 이를 메인 쿼리에서 재사용합니다.WITH SALES_SUM AS ( SELECT MONTH, SUM(AMOUNT) AS TOTAL FROM SALES GROUP BY MONTH)SELECT * FROM SALES_SUM W.. 2025. 5. 6. 📄 10편. MERGE 문으로 UPSERT 처리하기 📄 10편. MERGE 문으로 UPSERT 처리하기Oracle에서 MERGE 문은 INSERT와 UPDATE를 동시에 처리할 수 있는 강력한 SQL 문입니다.특히 ETL, 배치 처리, 대량 데이터 동기화에서 널리 사용됩니다.이번 글에서는 MERGE 문 기본 구조와 실전 예제를 통해 UPSERT를 구현하는 방법을 정리합니다.📚 예제 테이블: 회원 정보 동기화CREATE TABLE MEMBER ( ID NUMBER PRIMARY KEY, NAME VARCHAR2(50), EMAIL VARCHAR2(100));-- 기존 데이터INSERT INTO MEMBER VALUES (1, 'Kim', 'kim@example.com');INSERT INTO MEMBER VALUES (2, 'Lee', 'l.. 2025. 5. 6. 이전 1 2 3 다음