개발/SQL

🚀 SQL 효율적인 데이터 접근: VIEW, INDEX, SEQUENCE 완벽 가이드 (Oracle 기준)

예니03 2025. 2. 26. 08:38
반응형

데이터베이스에서 성능과 관리 효율을 높이기 위해 VIEW, INDEX, SEQUENCE는 꼭 알아야 할 필수 개념입니다! 🌱 실무에 자주 쓰이는 이유와 함께 쉽게 이해할 수 있는 예시로 설명드립니다. 😊

 

🎯 목차

  1. VIEW: 복잡한 쿼리를 재사용하는 방법
  2. INDEX: 빠른 데이터 검색을 위한 비법
  3. SEQUENCE + TRIGGER: 자동 번호 생성 및 조건 처리
  4. 실무 활용 팁과 주의사항 💡

 

📝 1. VIEW (뷰)

VIEW란?

  • 복잡한 SQL 쿼리를 저장재사용할 수 있는 가상 테이블입니다.
  • 실제 데이터를 저장하지 않고, 원본 테이블을 조회합니다.

🛠️ 언제 사용할까?

  • 복잡한 쿼리를 자주 반복할 때 🌀
  • 보안상 특정 컬럼만 사용자에게 보여줄 때 🔒
  • 여러 테이블을 JOIN한 결과를 간단하게 관리할 때 🗂️

📘 예시

-- 복잡한 쿼리 없이 부서별 평균 급여를 자주 조회하고 싶을 때
CREATE VIEW dept_avg_salary AS
SELECT d.department_name, AVG(e.salary) AS avg_salary
FROM employees e
JOIN departments d ON e.department_id = d.department_id
GROUP BY d.department_name;

-- VIEW 사용 시
SELECT * FROM dept_avg_salary;

장점: 반복 쿼리를 단순화하고 가독성 향상! 🚀
주의: VIEW는 원본 데이터를 참조하므로 원본 변경 시 결과도 바뀝니다.

 

2. INDEX (인덱스)

INDEX란?

  • 테이블의 특정 컬럼에 대해 빠른 검색을 가능하게 하는 자료 구조입니다.
  • 책의 색인처럼, 원하는 페이지를 빠르게 찾을 수 있게 도와줍니다. 📖

🚦 언제 사용할까?

  • WHERE 절이나 JOIN 조건에서 자주 사용되는 컬럼 🔎
  • ORDER BY나 GROUP BY 성능을 높이고 싶을 때 📊

📘 예시

-- employees 테이블의 name 컬럼에 인덱스 생성
CREATE INDEX idx_employee_name ON employees(name);

-- 인덱스 사용 전후 성능 차이 확인
SELECT * FROM employees WHERE name = 'Alice';

효과: 대규모 테이블 조회 속도가 대폭 향상됩니다! 🚀
⚠️ 주의: 인덱스 남용 시 데이터 입력/수정 시 오히려 느려질 수 있음. 중요한 컬럼에만 사용하세요.

 

🔢 3. SEQUENCE + TRIGGER (자동 번호 및 조건 처리)

SEQUENCE란?

  • 자동으로 연속된 숫자를 생성하는 객체입니다. (주로 기본키에 사용) 🔢

TRIGGER란?

  • INSERT, UPDATE, DELETE 시 자동으로 실행되는 프로시저입니다.
  • SEQUENCE와 함께 사용해 자동 번호 생성조건 처리가 가능! 💡

📘 예시: 직원 추가 시 자동으로 employee_id 부여하기

-- 시퀀스 생성
CREATE SEQUENCE emp_seq START WITH 1 INCREMENT BY 1;

-- 트리거 생성 (INSERT 시 자동 번호 할당)
CREATE TRIGGER emp_id_trigger
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
  :NEW.employee_id := emp_seq.NEXTVAL;
END;

-- 사용 예시
INSERT INTO employees (name, department_id, salary) VALUES ('David', 20, 5000);

결과: employee_id 자동 생성되어 일일이 입력할 필요 없음! 🙌
실무 활용: 중복 방지, 번호 일관성 유지에 필수.

 

💡 4. 실무 활용 팁과 주의사항

🎯 VIEW 사용 시

  • 가독성은 높지만, 너무 복잡한 VIEW 중첩은 성능 저하 발생할 수 있음 ⚠️
  • 주기적으로 사용하지 않는 VIEW는 제거해 관리하세요. 🧹

🚀 INDEX 사용 시

✅ 자주 검색하는 컬럼에만 적용!
❌ 모든 컬럼에 인덱스 사용 시 오히려 느려짐 ⚠️
✅ 인덱스 사용 후 EXPLAIN PLAN으로 성능 확인 📊

🔑 SEQUENCE + TRIGGER 사용 시

✅ 기본키 자동 생성으로 중복 오류 예방
✅ 트리거 로직이 과도하면 성능 문제 발생할 수 있음
✅ 예외 처리를 꼼꼼히! 🛡️

 

 

반응형