sql >> Databasteknik >  >> RDS >> Oracle

Vad är materialiserade åsikter?

Visst.

En normal vy är en fråga som definierar en virtuell tabell -- du har faktiskt inte data i tabellen, du skapar den direkt genom att köra.

En materialiserad vy är en vy där frågan körs och data sparas i en faktisk tabell.

Datan i den materialiserade vyn uppdateras när du säger till den.

Ett par användningsfall:

  • Vi har flera Oracle-instanser där vi vill ha masterdata på en instans, och en någorlunda aktuell kopia av data på de andra instanserna. Vi vill inte anta att databaslänkarna mellan dem alltid kommer att fungera. Så vi skapade materialiserade vyer på de andra instanserna, med frågor som select a,b,c from [email protected] och säg åt dem att uppdatera dagligen.

  • Materialiserade vyer är också användbara vid omskrivning av frågor. Låt oss säga att du har en faktatabell i ett datalager med varje bok som någonsin lånats från ett bibliotek, med datum och låntagare. Och att personalen regelbundet vill veta hur många gånger en bok har lånats. Bygg sedan en materialiserad vy som select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name , ställ in den för vilken uppdateringsfrekvens du vill ha -- vanligtvis uppdateringsfrekvensen för själva lagret. Om någon nu kör en sådan fråga för en viss bok mot book_trans tabell, kommer funktionen för omskrivning av frågor i Oracle att vara smart nog att titta på den materialiserade vyn snarare än att gå igenom miljontals rader i book_trans .

Vanligtvis bygger du materialiserade vyer av prestanda- och stabilitetsskäl - fläckiga nätverk, eller gör långa frågor som är lediga.



  1. Tabell [tabellnamn] är inte låst

  2. Ett rälsfält som är en array av JSON-objekt?

  3. Är JPA (EclipseLink) anpassade typer möjliga?

  4. Varför och när ska jag använda SPARSE COLUMN? (SQL SERVER 2008)