Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle - Cách tạo một khung nhìn cụ thể hóa với FAST REFRESH và JOINS

Để bắt đầu, từ Hướng dẫn Kho dữ liệu Cơ sở dữ liệu Oracle:

Hạn chế đối với việc làm mới nhanh trên các chế độ xem được vật chất hóa chỉ với tham gia

...

  • Rowid của tất cả các bảng trong danh sách FROM phải xuất hiện trong danh sách CHỌN của truy vấn.

Điều này có nghĩa là tuyên bố của bạn sẽ cần phải trông giống như sau:

CREATE MATERIALIZED VIEW MV_Test
  NOLOGGING
  CACHE
  BUILD IMMEDIATE 
  REFRESH FAST ON COMMIT 
  AS
    SELECT V.*, P.*, V.ROWID as V_ROWID, P.ROWID as P_ROWID 
    FROM TPM_PROJECTVERSION V,
         TPM_PROJECT P 
    WHERE P.PROJECTID = V.PROJECTID

Một khía cạnh quan trọng khác cần lưu ý là nhật ký chế độ xem cụ thể hóa của bạn phải được tạo dưới dạng with rowid .

Dưới đây là một kịch bản kiểm tra chức năng:

CREATE TABLE foo(foo NUMBER, CONSTRAINT foo_pk PRIMARY KEY(foo));

CREATE MATERIALIZED VIEW LOG ON foo WITH ROWID;

CREATE TABLE bar(foo NUMBER, bar NUMBER, CONSTRAINT bar_pk PRIMARY KEY(foo, bar));

CREATE MATERIALIZED VIEW LOG ON bar WITH ROWID;

CREATE MATERIALIZED VIEW foo_bar
  NOLOGGING
  CACHE
  BUILD IMMEDIATE
  REFRESH FAST ON COMMIT  AS SELECT foo.foo, 
                                    bar.bar, 
                                    foo.ROWID AS foo_rowid, 
                                    bar.ROWID AS bar_rowid 
                               FROM foo, bar
                              WHERE foo.foo = bar.foo;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 cách để tìm hàng có chứa chữ hoa trong Oracle

  2. Hiển thị tên của tất cả các ràng buộc cho một bảng trong Oracle SQL

  3. Cách lấy ngày hiện tại trong Oracle

  4. Chọn giá trị phần tử xml trong Oracle

  5. Cách tiếp tục xử lý vòng lặp con trỏ sau ngoại lệ trong Oracle