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

38.3. 롤 토토 된 견해

롤 토토 된 뷰에서PostgreSQL보기처럼 규칙 시스템을 사용하십시오. 그러나 결과를 테이블과 같은 형태로 유지하십시오. 주요 차이점 사이:

롤 토토 된 View MyMatView 생성 MyMatView 생성 *에서 MyTab;

및 :

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

이후에 롤 토토 된보기가 직접적으로 될 수 없습니까? 업데이트되었고 롤 토토 된보기를 작성하는 데 사용되는 쿼리는 다음과 같습니다. 뷰의 쿼리가 저장되는 것과 정확히 같은 방식으로 저장하므로 신선한 데이터가 롤 토토 된 관점을 위해 생성 될 수 있습니다. 와 함께:

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

PostgreSQL시스템 카탈로그는 정확히 동일합니다 테이블이나보기와 마찬가지로. 파서의 경우 롤 토토되었습니다 보기는 테이블이나보기처럼 관계입니다. 언제 a 롤 토토 된보기는 쿼리에서 참조되며 데이터가 반환됩니다. 테이블에서와 같이 롤 토토 된보기에서 직접; 규칙은입니다 롤 토토 된보기를 채우는 데만 사용됩니다.

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

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

사람들이 히스토리 판매를 신속하게 그래프로 만들 수 있기를 원한다면 데이터, 그들은 요약하고 싶을 수도 있고 현재 날짜에 대한 불완전한 데이터 :

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

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

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

새로 고침 롤 토토 된보기 Sales_Summary;

롤 토토 된 견해를위한 또 다른 용도는 더 빠른 액세스를 허용하는 것입니다. 외국 데이터를 통해 원격 시스템에서 가져온 데이터 싸개. 사용한 간단한 예file_fdw타이밍과 함께 아래에 있지만 로컬의 캐시를 사용하고 있기 때문에 시스템 외국 데이터 포장지의 성능 차이를 원격 시스템이 더 클 수 있습니다. 설정:

Extension file_fdw 만들기;
Server local_file 이외의 데이터 래퍼 파일 _fdw를 만듭니다.
외국 테이블 단어 만들기 (단어 텍스트가 아님 null)
  Server local_file
  옵션 (filename '/etc/dictionaries-common/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 행)

계획은 다음과 같습니다.

집계 (비용 = 4125.19..4125.20 줄 = 1 너비 = 0) (실제 시간 = 26.013..26.014 행 = 1 루프 = 1)
   - 단어에 대한 외국 스캔 (비용 = 0.00..4124.70 행 = 196 너비 = 0) (실제 시간 = 26.011..26.011 행 = 0 루프 = 1)
         필터 : (Word = 'CaterPiler':: 텍스트)
         필터에 의해 제거 된 행 : 99171
         외국 파일 :/etc/dictionaries-common/words
         외국 파일 크기 : 938848
 총 런타임 : 26.081 ms

롤 토토 된보기가 대신 사용되면 쿼리가 많이 더 빠르게:

집계 (비용 = 4.44..4.45 행 = 1 너비 = 0) (실제 시간 = 0.074..0.074 행 = 1 루프 = 1)
   - INDEX wrd에서 wrd_word를 사용하여 스캔 (비용 = 0.42..4.44 행 = 1 너비 = 0) (실제 시간 = 0.071..0.071 행 = 0 루프 = 1)
         색인 조건 : (Word = 'CaterPiler':: Text)
         힙을 가져옵니다 : 0
 총 런타임 : 0.119 ms

어느 쪽이든, 단어가 잘못되었으므로 우리가 무엇을 찾아 보자. 원했을 수도 있습니다. 다시 사용file_fdw:

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

     단어     
-----------------
 네 끗패
 무한 궤도
 무한 궤도
 애벌레
 애벌레
 애벌레
 케이터
 취사자
 수수료
 음식을 제공합니다
(10 줄)
한계 (비용 = 2195.70..2195.72 행 = 10 너비 = 32) (실제 시간 = 218.904..218.906 행 = 10 루프 = 1)
   - 정렬 (비용 = 2195.70..2237.61 행 = 16765 너비 = 32) (실제 시간 = 218.902..218.904 행 = 10 루프 = 1)
         정렬 키 : ((word <- 'Caterpiler':: Text)))
         정렬 방법 : Top-N Heapsort 메모리 : 25KB
         - 단어에 대한 외국 스캔 (비용 = 0.00..1833.41 행 = 16765 너비 = 32) (실제 시간 = 0.046..200.965 행 = 99171 루프 = 1)
               외국 파일 :/etc/dictionaries-common/words
               외국 파일 크기 : 938848
 총 런타임 : 218.966 MS

롤 토토 된보기 사용 :

한계 (비용 = 0.28..1.02 행 = 10 너비 = 9) (실제 시간 = 24.916..25.079 행 = 10 루프 = 1)
   - WRD에서 WRD_TRGM을 사용한 인덱스 스캔 (비용 = 0.28..7383.70 행 = 99171 너비 = 9) (실제 시간 = 24.914..25.076 행 = 10 루프 = 1)
         주문 : (Word <-- 'Caterpiler':: 텍스트)
 총 런타임 : 25.884 ms

원격 데이터의 정기적 인 업데이트를 로컬 데이터베이스, 성능 혜택은 상당 할 수 있습니다.