Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle - Как да създадете материализиран изглед с БЪРЗО ОБНОВЯВАНЕ и ПРИСЪЕДИНЕНИЯ

За начало от Ръководството за съхранение на данни на Oracle Database:

Ограничения за бързо опресняване на материализирани изгледи само с присъединяване

...

  • Редове на всички таблици в списъка FROM трябва да се показват в списъка SELECT на заявката.

Това означава, че изявлението ви ще трябва да изглежда по следния начин:

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

Друг ключов аспект, който трябва да се отбележи, е, че вашите материализирани изгледи трябва да бъдат създадени като with rowid .

По-долу е даден сценарий за функционален тест:

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. Oracle Trigger ORA-04098:тригерът е невалиден и неуспешно повторно валидиране

  2. Връщане на редове, които съдържат числови стойности в Oracle

  3. Функция JSON_VALUE() в Oracle

  4. Как мога да получа броя на записите, засегнати от съхранена процедура?

  5. Как да добавя водеща нула в число в Oracle SQL заявка?