Heim >Datenbank >MySQL-Tutorial >Wie kann ich Array-Elemente in JSON-Daten in PostgreSQL effizient abfragen?
Array-Elemente aus JSON-Daten in PostgreSQL abrufen
Der JSON-Datentyp von PostgreSQL (eingeführt in Version 9.3) vereinfacht das Speichern und Verwalten komplexer Datenstrukturen. Allerdings kann es schwierig sein, bestimmte Elemente in JSON-Arrays effizient abzufragen. Dieser Leitfaden zeigt effektive Strategien zum Abrufen von Array-Elementen, insbesondere mit Schwerpunkt auf „src“-Feldern innerhalb eines Arrays von Objekten.
Optimierter Ansatz für PostgreSQL 9.4 und höher (jsonb)
PostgreSQL 9.4 und spätere Versionen bieten den überlegenen jsonb
Datentyp und sorgen so für verbesserte Leistung und Funktionalität. Die effizienteste Methode verwendet den @>
-Operator mit jsonb_array_elements()
:
<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
Diese prägnante Abfrage prüft direkt, ob das Array „objects“ ein Element enthält, das den angegebenen Kriterien entspricht.
Lösung für PostgreSQL 9.3 und höher (json)
Für PostgreSQL 9.3 und höher (unter Verwendung des Typs json
) wird die Funktion json_array_elements()
innerhalb eines lateralen Joins verwendet:
<code class="language-sql">SELECT data::text, obj FROM reports r, json_array_elements(r.data#>'{objects}') obj WHERE obj->>'src' = 'foo.png';</code>
Dieser Ansatz entschachtelt das Array und ermöglicht die Prüfung einzelner Elemente.
Wichtige Hinweise:
unnest
Aufrufe oder seitliche Verknüpfungen erforderlich.Das obige ist der detaillierte Inhalt vonWie kann ich Array-Elemente in JSON-Daten in PostgreSQL effizient abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!