728x90
💡 주제: SQL 고급 객체를 통해 성능 향상 및 데이터 추상화 이해하기
🧩 오늘의 학습 목표
- 뷰(View)의 생성과 특징을 이해한다
- 인덱스(Index)의 동작 원리와 효율을 설명할 수 있다
- 클러스터링(Clustering)의 개념과 비클러스터드 방식의 차이를 이해한다
🎯 이론 설명
✅ 1. 뷰 (View)
**뷰(View)**는 하나 이상의 테이블을 조합한 가상의 테이블입니다.
데이터는 실제로 저장되지 않으며, 질의할 때마다 원본 테이블을 참조합니다.
🔹 뷰의 특징
- 데이터 보안에 유리 (민감 정보 숨김)
- 복잡한 쿼리를 단순화
- 실시간 데이터 반영 (기본적으로 변경 시 원본 반영)
🔹 뷰 생성 문법
sql
복사편집
CREATE VIEW view_name AS SELECT 열1, 열2 FROM 테이블 WHERE 조건;
📌 예시:
sql
복사편집
CREATE VIEW 컴공학생 AS SELECT name, age FROM student WHERE department = '컴퓨터공학';
🔹 뷰의 한계
- 기본적으로 뷰를 통한 데이터 수정(INSERT/UPDATE/DELETE) 은 제한적
- 조건: 단일 테이블, NOT NULL 아님, 집계함수 미사용 등
✅ 2. 인덱스 (Index)
인덱스는 테이블의 특정 열에 대해 검색 속도를 향상시키는 데이터 구조입니다.
도서관 책의 색인(Index)과 같은 개념입니다.
🔹 인덱스 특징
장점단점
검색 속도 향상 | INSERT/DELETE/UPDATE 시 인덱스도 갱신되어 오히려 성능 저하 가능 |
정렬/조건문 성능 향상 | 디스크 공간 추가 사용 |
🔹 인덱스 생성 문법
sql
복사편집
CREATE INDEX 인덱스이름 ON 테이블이름(열이름);
📌 예시:
sql
복사편집
CREATE INDEX idx_name ON student(name);
WHERE name = '홍길동' 같은 조건일 때 성능 향상
✅ 3. 클러스터링 (Clustering)
클러스터링이란, 테이블의 물리적 저장 순서를 특정 컬럼 기준으로 정렬하는 기법입니다.
🔹 클러스터드 인덱스 (Clustered Index)
- 데이터 자체가 인덱스 순서대로 저장
- 한 테이블에 하나만 존재
📌 예: 기본키를 기준으로 클러스터링 → 검색 + 범위조회에 유리
🔹 비클러스터드 인덱스 (Non-clustered Index)
- 데이터와 별도로 인덱스 구조 유지
- 여러 개 생성 가능
- 인덱스 → 실제 데이터 주소를 따라가야 하므로 약간 느릴 수 있음
📝 기출문제 예제
문제: 뷰(View)에 대한 설명으로 옳지 않은 것은?
① 뷰는 가상 테이블이다
② 뷰는 항상 데이터를 저장한다
③ 뷰를 통해 복잡한 질의를 단순화할 수 있다
④ 뷰는 보안을 위해 사용되기도 한다✅ 정답: ②
🧠 해설:
- 뷰는 가상의 테이블로, 실제 데이터를 저장하지 않으며 항상 원본 테이블을 참조합니다.
💡 오늘의 정리 포인트
- **뷰(View)**는 가상 테이블로 보안성과 편의성을 제공
- **인덱스(Index)**는 검색 속도 향상, 하지만 삽입/삭제 시 성능 저하 가능성 있음
- 클러스터링은 데이터의 실제 저장 순서를 바꾸어 검색 효율을 높이는 기법
- SQL 성능 최적화를 위해 꼭 필요한 고급 기능들
728x90
'정보처리기사' 카테고리의 다른 글
📘 [12일차] NoSQL, 분산 데이터베이스, CAP 이론 — 정보처리기사 최신 기술 흐름 요약 (1) | 2025.05.10 |
---|---|
📘 [11일차] 데이터베이스 보안과 백업 복구 전략 완전 정리 (0) | 2025.05.09 |
📘 [9일차] 트랜잭션 병행 제어와 회복 기법 완전 정리 (0) | 2025.05.07 |
📘 [8일차] 이상 현상과 정규화 심화 – 삽입/삭제/갱신 이상 (1) | 2025.05.06 |
📘 [7일차] 관계 대수와 관계 해석 완전 정리 (0) | 2025.05.04 |