2014-05-18 5 views
2

현재 postgresql을 배우고 있습니다. 그러나 테이블, 뷰 및 구체화 된보기에 대해 다소 혼란 스럽습니다. 개념과 기본 정의를 이해합니다. 그러나 때로는 표,보기 또는 구체화 된보기를 작성해야한다는 결정을 내려야하는 경우가 있습니다. 누구든지 올바르게 적용하는 방법을 경험해 보시겠습니까? 다른 사람들의 장단점은 무엇입니까? 감사합니다테이블 대 뷰 대 Materialized보기

+1

이것은 postgresql보다 일반적입니다. 대부분의 관계형 데이터베이스에서 같은 패턴이 적용됩니다. – wrschneider

답변

5

테이블은 데이터가 저장되는 곳입니다. 먼저 테이블부터 시작한 다음 사용 패턴에 따라 뷰 또는 구체화 된 뷰가 필요한지 여부가 결정됩니다.

보기는 나중에 여러 곳에서 동일한 테이블을 동일한 방식으로 조인하거나 필터링하는 경우 향후 사용을 위해 저장된 쿼리와 같습니다.

구체화 된보기는 둘 다의 조합과 같습니다. 이는보기를 통해 자동으로 채워지고 새로 고쳐지는 테이블입니다. 뷰를 사용하고 있고 쿼리를 빠르게 처리하기 위해 행을 미리 조인하거나 미리 집계하려는 경우이 옵션을 사용합니다.

2

This article이 부분에 대한 좋은 설명이 있습니다. 그것으로부터 인용,

당신이 TABLE을 질의 할 때 당신은 그 데이터를 직접 가져온다. 다른 의 경우 VIEW를 쿼리 할 때 기본적으로 VIEW의 정의에 저장된 다른 쿼리 을 쿼리하고 있습니다. 두가 구체화 VIEW 사이

...

는 - 그것의 정의에 쿼리를 가지고 있으며, 스토리지에서 직접 의 데이터를 가져 오기 위해이 쿼리를 사용하는 VIEW, 그러나 그것은 또한 그것은 자신의있다 기본적으로 을 기본 테이블과 MATERIALIZED VIEW에서 작동하는 쿼리 사이의 캐시로 사용합니다. 무효화 된 캐시와 마찬가지로 정의의 쿼리 이 실제 데이터에 대해 다시 실행되는 프로세스 인 것처럼 새로 고칠 수 있습니다.