Weiter zum Inhalt

Materialisierte Views in PostgreSQL

Lerne, wie du die Ergebnisse einer Abfrage mit materialisierten Views in PostgreSQL speicherst.
Aktualisiert 18. Sept. 2026  · 6 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Wenn du viel mit SQL arbeitest (idealerweise mit PostgreSQL) und Datenbanken abfragst, hast du vermutlich schon eine ganze Reihe komplexer Abfragen geschrieben, um wichtige Fragen zu beantworten. Oft brauchst du die Ergebnisse dieser Abfragen regelmäßig in deiner Arbeit. Eine komplexe Abfrage mehrfach auszuführen, kann teuer werden. Was, wenn es eine Möglichkeit gäbe, die Ergebnisse einer komplexen Abfrage zwischenzuspeichern, um die Performance zu verbessern? Genau hier kommen materialisierte Views ins Spiel.

Vielleicht denkst du jetzt: Es gibt doch auch einfache Views, die das Ergebnis einer Abfrage bereitstellen. Eine einfache View unterscheidet sich jedoch in mehreren Punkten von einer materialisierten View. Laut der offiziellen PostgreSQL-Dokumentation gilt für einfache Views:

The view is not physically materialized. Instead, the query is run every time the view is referenced in a query.

Das bedeutet: Einfache Views werden nicht physisch in der Datenbank gespeichert. Jedes Mal, wenn eine View in einer Abfrage verwendet wird, wird die zugrunde liegende Abfrage erneut ausgeführt. Das macht einfache Views in puncto Zugriffszeit etwas ineffizient.

Materialisierte Views bieten dagegen viel Flexibilität, weil sie die View physisch in der Datenbank speichern. Du kannst mit materialisierten Views arbeiten wie mit einfachen Views – allerdings mit kürzerer Zugriffszeit. Im weiteren Verlauf dieses Tutorials lernst du materialisierte Views in PostgreSQL kennen. In einem seiner Webinare zeigt DataCamps Chief Data Scientist David Robinson, wie er materialisierte Views nutzt, um Ergebnisse komplexer Abfragen effizient zu speichern.

Hinweis: Um diesem Tutorial zu folgen, solltest du mit den Inhalten aus dem Kurs Joining Data in SQL vertraut sein.

Erste Einrichtung der Datenbank

Am besten legst du in PostgreSQL eine Datenbank an und erstellst dort eine Basistabelle, damit du effektiv darauf zugreifen kannst. Das hilft dir auch in den folgenden Abschnitten dieses Tutorials. Du kannst dieses Datenbank-Backup wiederherstellen, das die Tabelle enthält, die du hier verwenden wirst. Wenn du lernen möchtest, wie man ein Backup in PostgreSQL wiederherstellt, folge dem ersten Abschnitt von diesem Tutorial.

Wenn du das Backup erfolgreich wiederhergestellt hast, solltest du eine Tabelle namens international_debt in der Datenbank sehen (falls du noch keine Datenbank hast, lege zuerst eine an). Wirf schnell einen Blick auf die ersten Zeilen der Tabelle (eine einfache SELECT-Abfrage genügt) –

database

Die Tabelle enthält Informationen zu Schuldenstatistiken verschiedener Länder weltweit für das aktuelle Jahr in unterschiedlichen Kategorien (siehe die Spalten indicator_name, indicator_code). Die Spalte debt zeigt die Höhe der Schulden (in USD), die ein Land in einer bestimmten Kategorie hat. Die Daten stammen aus der Volkswirtschaftslehre und werden häufig genutzt, um die wirtschaftliche Lage verschiedener Länder zu analysieren. Erhoben wurden sie von der Weltbank.

Nachdem die Datenbank steht, kannst du mit den nächsten Abschnitten dieses Tutorials fortfahren.

Materialisierte Views erstellen

Lass uns eine materialisierte View für die folgende Abfrage erstellen –

select country_name,
sum(debt) as total_debt
from international_debt
group by country_name order by country_name;

Die Abfrage liefert Ländernamen mit ihrer gesamten Verschuldung (alphabetisch sortiert). Die Ausgabe sieht in etwa so aus –

Nun die materialisierte View –

CREATE MATERIALIZED VIEW country_total_debt
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name;

Du solltest eine Erfolgsmeldung erhalten wie: Query returned successfully: 124 rows affected, 242 ms execution time.

Eine materialisierte View aktualisieren

Du kannst PostgreSQL beim Erstellen auch anweisen, zunächst keine Daten in die materialisierte View zu laden, indem du die Option WITH NO DATA angibst –

CREATE MATERIALIZED VIEW country_total_debt_2
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name
WITH NO DATA;

Dann erhältst du eine Meldung wie: Query returned successfully with no result in 41 ms. Achte auf den Unterschied zwischen den beiden Ausgaben. Mit der Option WITH NO DATA wird eine leere materialisierte View erstellt. Diese View kannst du nicht abfragen. Du kannst sie jedoch befüllen, indem du Folgendes ausführst –

REFRESH MATERIALIZED VIEW country_total_debt_2;

Eine materialisierte View abfragen

Inzwischen solltest du zwei materialisierte Views erstellt haben (country_total_debt, country_total_debt_2). Führen wir eine einfache SELECT-Abfrage auf eine der beiden aus –

select * from country_total_debt_2;

Die Abfrage liefert etwas wie –

query

Die Ausgabe entspricht exakt der Abfrage, die wir in die materialisierte View gepackt haben. Du kannst auf materialisierten Views auch Abfragen mit Aggregatfunktionen ausführen –

select max(total_debt) from country_total_debt_2;

Du solltest Folgendes erhalten – output

Eine materialisierte View löschen

Materialisierte Views kannst du in PostgreSQL genauso löschen wie Tabellen. Du musst lediglich nach Drop noch Materialized View angeben –

Drop Materialized View country_total_debt_2;

Wenn du MySQL mit seinem zweitbeliebtesten Wettbewerber vergleichen willst, lies unseren ausführlichen Vergleich PostgreSQL vs. MySQL.

Fazit

Das war's mit diesem Tutorial. Danke, dass du bis zum Ende dabeigeblieben bist. Du hast gelernt, was materialisierte Views in PostgreSQL sind und wie du damit arbeitest. Wegen ihrer Effizienz werden materialisierte Views häufig im Data-Warehousing eingesetzt. Wenn du dich in komplexere Abfragen einarbeiten möchtest, schau dir diese DataCamp-Kurse an:

Themen
SQL

SQL-Kurse

Kurs

Datenbearbeitung in SQL

4 Std.
335.5K
Lerne, mit komplexen SQL-Abfragen diverse Data-Science-Aufgaben zu lösen und Datensätze für Analysen in PostgreSQL vorzubereiten.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Python Datenstrukturen Tutorial

Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Sejal Jaiswal's photo

Sejal Jaiswal

24 Min.

Tutorial

Python-Arrays

Python-Arrays mit Code-Beispielen. Lerne noch heute, wie du mit Python NumPy Arrays erstellen und ausdrucken kannst!
DataCamp Team's photo

DataCamp Team

3 Min.

Tutorial

Python-Anweisungen IF, ELIF und ELSE

In diesem Tutorial lernst du ausschließlich Python if else-Anweisungen kennen.
Sejal Jaiswal's photo

Sejal Jaiswal

9 Min.

Tutorial

Ein Leitfaden zu Python-Hashmaps

Finde heraus, was Hashmaps sind und wie sie in Python mit Hilfe von Wörterbüchern umgesetzt werden.
Javier Canales Luna's photo

Javier Canales Luna

11 Min.

Tutorial

Python JSON-Daten: Ein Leitfaden mit Beispielen

Lerne, wie man mit JSON in Python arbeitet, einschließlich Serialisierung, Deserialisierung, Formatierung, Leistungsoptimierung, Umgang mit APIs und Verständnis der Einschränkungen und Alternativen von JSON.
Moez Ali's photo

Moez Ali

6 Min.

Tutorial

Fibonacci-Folge in Python: Lerne und entdecke Programmiertechniken

Finde raus, wie die Fibonacci-Folge funktioniert. Schau dir die mathematischen Eigenschaften und die Anwendungen in der echten Welt an.
Laiba Siddiqui's photo

Laiba Siddiqui

6 Min.

Mehr AnzeigenMehr Anzeigen