Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL jsonb_each()

Die JSON-Funktionen von PostgreSQL, wie z.B. `jsonb_each()`, ermöglichen eine effiziente Bearbeitung und Abfrage von Daten, die im JSONB-Format gespeichert sind. Die Funktion `jsonb_each()` gibt eine Reihe von Schlüssel-Wert-Paaren aus einem JSONB-Objekt zurück. Die Verwendung von `jsonb_each()` kann die Verarbeitung von JSONB-Daten vereinfachen und bietet Vorteile wie eine einfachere Iteration über JSONB-Objekte und Kompatibilität mit den robusten Indexierungsfunktionen von PostgreSQL.

Verwendung

Mit der Funktion `jsonb_each()` wird ein JSONB-Objekt in einzelne Schlüssel-Wert-Paare zerlegt, was die Verarbeitung und Abfrage von JSONB-Daten erleichtert. Sie ist besonders nützlich, wenn du JSONB-Daten, die in einer PostgreSQL-Tabelle gespeichert sind, iterieren musst. Die Funktion gibt eine Reihe von Datensätzen zurück, mit `key` als Text und `value` als JSONB.

SELECT jsonb_each(jsonb_column)
FROM table_name;

In dieser Syntax extrahiert `jsonb_each(jsonb_column)` jedes Schlüssel-Wert-Paar aus der angegebenen JSONB-Spalte.

Beispiele

1. Grundlegende Extraktion

SELECT jsonb_each('{"name": "John", "age": 30}');

Dieses Beispiel zerlegt ein einfaches JSONB-Objekt in einzelne Schlüssel-Wert-Paare und gibt eine Menge mit "Name" als "John" und "Alter" als 30 zurück. Die Funktion wird direkt auf ein JSONB-Literal angewendet, was zu Demonstrationszwecken nützlich ist.

2. Extrahieren aus einer Tabelle

SELECT jsonb_each(data)
FROM users_data;

Hier extrahiert die Funktion Schlüssel-Wert-Paare aus der Spalte `data` der Tabelle `users_data`, in der JSONB-Objekte für jede Zeile gespeichert sind. Die Spalte "Daten" muss wohlgeformte JSONB-Objekte enthalten.

3. Verwendung von jsonb_each() mit WHERE-Klausel

SELECT key, value
FROM jsonb_each('{"name": "John", "age": 30, "city": "New York"}') AS kv
WHERE kv.key = 'city';

In diesem Beispiel wird `jsonb_each()` in Verbindung mit einer `WHERE`-Klausel verwendet, um die Ergebnisse zu filtern und nur das Schlüssel-Wert-Paar zurückzugeben, dessen Schlüssel "Stadt" ist. Der Teil "AS kv" weist der Ergebnismenge einen Alias zu, um sie leichter referenzieren zu können.

Tipps und bewährte Praktiken

  • Verwendung mit JSONB-Datentypen. Stelle sicher, dass deine JSON-Daten im `jsonb`-Format gespeichert werden, um die Vorteile der Indizierung und der Leistung zu nutzen.
  • Kombiniere mit "LATERAL"-Verbindungen. Wenn du mit Tabellen arbeitest, solltest du `LATERAL`-Joins verwenden, um JSONB-Daten effizient zu verarbeiten.
  • Filter auf Tasten. Verwende die `WHERE`-Klausel, um bestimmte Schlüssel zu filtern, wenn du nur bestimmte Datenpunkte benötigst.
  • Index JSONB-Spalten. Um die Leistung zu optimieren, solltest du häufig abgefragte JSONB-Schlüssel indizieren. Verwende `GIN`-Indizes für JSONB-Daten, um die Suche nach Schlüssel-Wert-Paaren zu beschleunigen.
  • Leistungsüberlegungen. Sei dir der möglichen Auswirkungen auf die Leistung bewusst, wenn du mit großen JSONB-Objekten arbeitest, da `jsonb_each()` die Abfrageleistung beeinträchtigen kann.