sql >> Database teknologi >  >> RDS >> Oracle

Oracle - Sådan opretter du en materialiseret visning med HURTIG OPDATERING og JOINS

Til at starte med, fra Oracle Database Data Warehousing Guide:

Begrænsninger for hurtig opdatering af materialiserede visninger med kun tilslutninger

...

  • Rovider af alle tabellerne på FROM-listen skal vises i SELECT-listen for forespørgslen.

Det betyder, at din erklæring skal se nogenlunde sådan ud:

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

Et andet vigtigt aspekt at bemærke er, at dine materialiserede visningslogfiler skal oprettes som with rowid .

Nedenfor er et funktionelt testscenarie:

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. Hvordan ROWNUM fungerer i pagineringsforespørgsel?

  2. Sådan opdeles forespørgselsvindue i SQL Server Management Studio (SSMS) - SQL Server / TSQL selvstudie del 13

  3. MySQL fjerner hurtigt dubletter fra stor database

  4. Er der en måde at indstille en udløbstid, hvorefter en dataindtastning automatisk slettes i PostgreSQL?