이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 39.3. 사설 토토 핫 사이트 된 견해버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

39.3. 구체화 된 견해#

토토 핫 된보기에서PostgreSQL보기와 마찬가지로 규칙 시스템을 사용하지만 결과를 테이블과 같은 형태로 유지하십시오. 다음의 주요 차이점 :

토토 핫 된 View MyMatView 생성 MyMatView를 선택 * From MyTab;

및 :

TABLE MYMATVIEW를 선택하여 * MyTab에서 *

토토 핫 된 뷰는 직접 업데이트 될 수 없으며, 토토 핫 된보기를 생성하는 데 사용되는 쿼리가 뷰의 쿼리가 저장되는 것과 동일한 방식으로 저장되므로 다음과 함께 토토 핫 된 뷰를 위해 신선한 데이터를 생성 할 수 있습니다.

새로 고침 토토 핫 된보기 mymatview;

PostgreSQL시스템 카탈로그는 테이블이나보기와 정확히 동일합니다. 따라서 파서의 경우, 구체화 된보기는 테이블이나보기와 같은 관계입니다. 구체화 된보기가 쿼리에서 참조되면, 데이터는 표에서와 같이 토토 핫 된보기에서 직접 반환됩니다. 규칙은 구체화 된보기를 채우는 데만 사용됩니다.

토토 핫 된보기에 저장된 데이터에 대한 액세스는 종종 기본 테이블에 직접 또는 뷰를 통해 액세스하는 것보다 훨씬 빠르지 만 데이터가 항상 최신 것은 아닙니다. 그러나 때로는 현재 데이터가 필요하지 않습니다. 판매를 기록하는 테이블을 고려하십시오 :

테이블 송장 생성 (
    invoice_no 정수 기본 키,
    Seller_no Integer, - 영업 사원의 ID
    invoice_date 날짜 - 판매 날짜
    invoice_amt 숫자 (13,2) - 판매량
);

사람들이 히스토리 판매 데이터를 빠르게 그래프로 그래프로 그래프로 만들 수 있기를 원한다면 요약하고 싶을 수도 있고 현재 날짜의 불완전한 데이터에 신경 쓰지 않을 수 있습니다..

토토 핫 된보기 생성 Sales_Summary as
  선택하다
      Seller_no,
      invoice_date,
      SALL (invoice_amt) :: 숫자 (13,2)로 sales_amt
    송장에서
    여기서 invoice_date <current_date
    그룹에 의해
      Seller_no,
      invoice_date;

고유 한 인덱스 판매 _summary_seller를 만듭니다
  on sales_summary (seller_no, invoice_date);

이 토토 핫 된보기는 영업 사원을 위해 생성 된 대시 보드에 그래프를 표시하는 데 유용 할 수 있습니다. 이 SQL 문을 사용하여 매일 밤 통계를 업데이트 할 예정이 될 수 있습니다.

새로 고침 토토 핫 된보기 Sales_SUMMARY;

토토 핫 된보기의 또 다른 용도는 외국 데이터 래퍼를 통해 원격 시스템에서 가져온 데이터에 더 빠르게 액세스 할 수 있도록하는 것입니다. 사용한 간단한 예file_fdw는 아래에 있으며 타이밍이 아래에 있지만 로컬 시스템의 캐시를 사용하기 때문에 원격 시스템에 대한 액세스와 비교하여 성능 차이가 일반적으로 여기에 표시되는 것보다 클 것입니다. 또한 우리는 또한 토토 핫 된 견해에 인덱스를 넣을 수있는 능력을 활용하고있는 반면file_fdw지수를 지원하지 않습니다. 이 장점은 다른 종류의 외국 데이터 액세스에 적용되지 않을 수 있습니다.

설정 :

Extension file_fdw 만들기;
Server local_file 이외의 데이터 래퍼 파일 _fdw를 만듭니다.
외국 테이블 단어 만들기 (단어 텍스트가 아님 null)
  Server local_file
  옵션 (filename '/usr/share/dict/words');
구체화 된보기 wrd를 선택하여 * Word에서 선택하십시오.
WRD (Word)에서 고유 한 인덱스 WRD_WORD를 만듭니다.
Extension PG_TRGM 작성;
GIST (Word Gist_trgm_ops)를 사용하여 WRD에서 색인 WRD_TRGM을 만듭니다.
진공 분석 WRD;

이제 단어를 철판하자. 사용file_fdw직접 :

Word = 'caterpiler'에서 단어에서 count (*)를 선택하십시오.

 세다
-------
     0
(1 행)

with분석, 우리는 다음을 본다 :

집계 (비용 = 21763.99..21764.00 행 = 1 너비 = 0) (실제 시간 = 188.180..188.181 줄 = 1.00 루프 = 1)
   - 단어에 대한 외국 스캔 (비용 = 0.00..21761.41 행 = 1032 너비 = 0) (실제 시간 = 188.177..188.177 행 = 0.00 루프 = 1)
         필터 : (Word = 'CaterPiler':: 텍스트)
         필터에 의해 제거 된 행 : 479829
         외국 파일 :/usr/share/dict/words
         외국 파일 크기 : 4953699
 계획 시간 : 0.118ms
 실행 시간 : 188.273 MS

토토 핫 된보기가 대신 사용되면 쿼리가 훨씬 빠릅니다.

집계 (비용 = 4.44..4.45 행 = 1 너비 = 0) (실제 시간 = 0.042..0.042 행 = 1.00 루프 = 1)
   - index wrd에서 wrd_word를 사용하여 스캔합니다 (비용 = 0.42..4.44 행 = 1 너비 = 0) (실제 시간 = 0.039..0.039 행 = 0.00 루프 = 1)
         색인 조건 : (Word = 'CaterPiler':: Text)
         힙을 가져옵니다 : 0
         색인 검색 : 1
 계획 시간 : 0.164 ms
 실행 시간 : 0.117 ms

어느 쪽이든, 단어가 잘못되었으므로 우리가 원했던 것을 찾아 봅시다. 다시 사용file_fdwandPG_TRGM:

단어로 단어에서 단어를 선택하여 단어 <- 'Caterpiler'Limit 10;

     단어
-----------------
 네 끗패
 무한 궤도
 무한 궤도
 애벌레
 애벌레
 애벌레
 케이터
 취사자
 수수료
 음식을 제공합니다
(10 줄)
한계 (비용 = 11583.61..11583.64 행 = 10 너비 = 32) (실제 시간 = 1431.591..1431.594 줄 = 10.00 루프 = 1)
   - 정렬 (비용 = 11583.61..11804.76 행 = 88459 너비 = 32) (실제 시간 = 1431.589..1431.591 행 = 10.00 루프 = 1)
         정렬 키 : ((word <- 'Caterpiler':: Text)))
         정렬 방법 : Top-N Heapsort 메모리 : 25KB
         - 단어에 대한 외국 스캔 (비용 = 0.00..9672.05 줄 = 88459 너비 = 32) (실제 시간 = 0.057..1286.455 줄 = 479829.00 루프 = 1)
               외국 파일 :/usr/share/dict/words
               외국 파일 크기 : 4953699
 계획 시간 : 0.128ms
 실행 시간 : 1431.679 MS

토토 핫 된보기 사용 :

한계 (비용 = 0.29..1.06 행 = 10 너비 = 10) (실제 시간 = 187.222..188.257 행 = 10.00 루프 = 1)
   - WRD에서 WRD_TRGM을 사용한 인덱스 스캔 (비용 = 0.29..37020.87 행 = 479829 너비 = 10) (실제 시간 = 187.219..188.252 행 = 10.00 루프 = 1)
         주문 : (Word <-- 'Caterpiler':: 텍스트)
         색인 검색 : 1
 계획 시간 : 0.196ms
 실행 시간 : 198.640 ms

로컬 데이터베이스에 대한 원격 데이터의 정기적 인 업데이트를 견딜 수 있다면 성능 혜택이 상당 할 수 있습니다.