Entwicklung / Server & Infrastruktur / PostgreSQL / JSONB & GIN-Indizes
Zur Navigation springen
Zur Suche springen
Praxis-Guide: PostgreSQL JSONB & GIN-Indizes
PostgreSQL bietet mit dem Datentyp JSONB vollwertige NoSQL-Dokumentenspeicherung mit binärer Komprimierung, Feldindizierung via GIN-Indizes und komplexen JSON-Operatoren (@>, ->>).
📊 1. Tabelle mit JSONB-Spalte & GIN-Index erstellen
CREATE TABLE nutzer_profile (
id BIGSERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
einstellungen JSONB NOT NULL DEFAULT '{}'::jsonb,
erstellt_am TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- GIN-Index (Generalized Inverted Index) für ultraschnelle JSON-Suche anlegen
CREATE INDEX idx_nutzer_einstellungen ON nutzer_profile USING gin (einstellungen);
🔍 2. JSONB Daten einfügen & Abfragen
Daten einfügen
INSERT INTO nutzer_profile (username, einstellungen)
VALUES (
'thorsten',
'{"theme": "dark", "notifications": {"email": true, "sms": false}, "tags": ["admin", "dev"]}'
);
Abfrage 1: JSON-Verschachtelung abfragen (->>)
SELECT username
FROM nutzer_profile
WHERE einstellungen->'notifications'->>'email' = 'true';
Abfrage 2: Enthält-Operator (@>) mit GIN-Index Nutzung
-- Prüft ob das JSON den Schlüssel/Wert-Paar enthält (nutzt den GIN-Index!)
SELECT username
FROM nutzer_profile
WHERE einstellungen @> '{"theme": "dark"}';
🔗 Verwandte Themen
- PostgreSQL Performance Tuning – Tuning
- PostgreSQL + pgvector – Vektordatenbanken
- PostgreSQL Table Partitioning – Partitionierung