Database/SQL

[SQL] #09 뷰(View)와 인덱스(Index) 완벽 이해! 속도와 재 사용을 동시에 잡자!

TOASTDEV 2025. 7. 31. 16:00
반응형

 

안녕하세요 토스트데브입니다 😊
오늘은 SQL에서 자주 사용되지만 헷갈릴 수 있는 두 가지 개념, (View)와 인덱스(Index)에 대해 깔끔하게 정리해드릴게요!

 

 

👁️ SQL 뷰(View)란?

✅ 뷰의 정의

뷰(View)는 하나 이상의 테이블에서 미리 정의해둔 SELECT 쿼리의 결과를 저장한 가상의 테이블입니다.

📌 실제 데이터를 저장하지 않고, 쿼리 결과만을 보여주는 읽기 전용 창이라고 생각하면 이해가 쉬워요.

 

📌 뷰의 사용 목적

  • 복잡한 쿼리를 간단하게 재사용
  • 민감한 데이터를 숨기고 보여주기
  • 데이터 접근을 논리적으로 분리
  • 보안성과 가독성 향상

 

🧪 뷰 생성 예제

CREATE VIEW active_users AS
SELECT id, name, email
FROM users
WHERE is_active = 1;
➡️ 이제 SELECT * FROM active_users; 만 해도 항상 “활성 사용자 목록”이 나옵니다.

 

⚠️ 뷰의 주의사항

  • 기본적으로 가상 테이블이므로 실제 데이터를 저장하지 않음
  • 일부 DBMS에서는 업데이트가 제한될 수 있음
  • VIEW는 항상 최신 데이터를 기반으로 동작 (동기화 걱정 없음)

 

 

⚡ SQL 인덱스(Index)란?

✅ 인덱스의 정의

인덱스(Index)는 테이블의 특정 컬럼에 대해 검색 속도를 빠르게 하기 위한 데이터 구조입니다.

📚 책의 목차처럼, 원하는 데이터를 빠르게 찾도록 도와주는 역할이에요.

 

📌 인덱스를 사용하는 이유

  • WHERE, JOIN, ORDER BY, GROUP BY 등에 사용되는 검색 성능 개선
  • 수천만 건의 데이터 중에서도 빠르게 원하는 값을 찾을 수 있음

 

🧪 인덱스 생성 예제

CREATE INDEX idx_users_email
ON users (email);

➡️ 이제 WHERE email = 'test@example.com' 같은 조건의 검색 속도가 훨씬 빨라집니다.

 

⚠️ 인덱스 주의사항

  • 검색 속도는 빨라지지만, 삽입/수정/삭제 성능은 약간 느려질 수 있음
  • 너무 많은 인덱스를 만들면 오히려 성능이 저하될 수 있음
  • 인덱스는 자주 조회되는 컬럼 위주로 설정하는 것이 좋음

 

 

✍️ 마무리

  • 뷰(View)는 복잡한 쿼리를 단순하게,
  • 인덱스(Index)는 느린 검색을 빠르게 만들어 줍니다.
    이 둘은 SQL 실무에서 유지보수와 성능 최적화의 핵심 도구입니다.

 

#SQL #SQL기초 #뷰 #View #인덱스 #Index #데이터베이스 #DBMS #성능최적화 #SQL튜닝 #쿼리성능 #SQL강의 #웹개발 #MySQL

반응형