TechBridge

뷰 & Materialized View — 쿼리를 자산화, 언제 무엇을 쓸 것인가

← 목록으로

📋 실습 안내

✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기 내 코드 실행 결과
🎯 완성 미리보기 목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기 이번 강의 전용
  선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. 일반 VIEW와 MATERIALIZED VIEW의 가장 큰 차이점은?
💡 VIEW는 쿼리가 실행될 때마다 베이스 테이블을 조회하므로 항상 최신 데이터입니다. MATERIALIZED VIEW는 물리적으로 저장된 데이터를 사용하므로 REFRESH 전까지 데이터가 오래될 수 있습니다. 대신 MV는 인덱스를 추가할 수 있어 집계 쿼리에서 매우 빠릅니다.
Q2. REFRESH MATERIALIZED VIEW CONCURRENTLY를 사용하기 위한 전제 조건은?
💡 REFRESH MATERIALIZED VIEW CONCURRENTLY는 MV에 UNIQUE INDEX가 최소 하나 있어야 사용할 수 있습니다. CONCURRENTLY는 다른 트랜잭션의 조회를 차단하지 않고 MV를 갱신합니다.
Q3. CREATE VIEW ... WITH CHECK OPTION의 역할은?
💡 WITH CHECK OPTION은 뷰를 통한 INSERT/UPDATE 결과가 뷰의 WHERE 조건을 만족하지 않으면 에러를 발생시킵니다. 예: status='active' 조건의 뷰에서 status='inactive'로 UPDATE 시도 → 에러.
Q4. MySQL에는 없지만 PostgreSQL에 있는 기능은?
💡 MySQL에는 MATERIALIZED VIEW가 없습니다. MySQL에서 유사한 기능을 구현하려면 Event Scheduler와 별도 테이블로 직접 구현해야 합니다. PostgreSQL은 MATERIALIZED VIEW를 내장 지원합니다.
Q5. Materialized View를 사용하기에 가장 적합한 시나리오는?
💡 Materialized View는 복잡한 집계 쿼리가 느릴 때, 그리고 실시간성이 중요하지 않을 때 사용합니다. 월별 매출 집계는 자주 변하지 않고 계산 비용이 높아 MV에 가장 적합합니다. 실시간 데이터(재고, 로그인 수)는 일반 VIEW를 사용해야 합니다.
🎉

퀴즈 통과!

점수: 0점 — 수고하셨습니다!

다음 강의로 →
😅

아쉽네요!

점수: 0점 — 70점 이상이 되어야 통과합니다.