Ich weiß, dass Sie einen Index für ein Feld in einer Hstore-Spalte erstellen können. Ich weiß, dass Sie auch einen GIN-Index für eine Array-Spalte erstellen können.Indizes auf PostgreSQL Hstore Array-Spalten
Aber wie lautet die Syntax zum Erstellen eines Index für ein Hstore-Array?
z.B.
CREATE TABLE customer (
pk serial PRIMARY KEY,
customer hstore,
customer_purchases hstore[]
);
Sagen wir, der Kunde kauft hstore ein Hash sein kann wie
productId -> 1
price -> 9.99
und ich habe eine Reihe von denen in den customer_purchases hstore []
Ich möchte einen Index für Kunden schaffen .customer_purchases [] -> productId
Ist das möglich? Ich habe verschiedene Kombinationen von CREATE INDEX-Syntaxen ausprobiert, und keines davon scheint Indexfelder in einem Hstore-Array zu unterstützen.
Dies scheint ein gelöstes Problem, wenn Sie Hstore ignorieren und einfach zwei zusätzliche Tabellen verwenden. Warum so? Wenn Sie aus irgendeinem Grund eine IMMUTABLE-Funktion definieren müssen, die einen sortierbaren Wert erzeugt, und rufen Sie die Funktion in Ihrer CREATE INDEX-Syntax auf. –
Wie ich in einem Kommentar unten erwähnt habe, wollen wir uns zu einem schemafreien DB-Modell entwickeln, so dass wir neue Versionen unserer Anwendungen ohne Ausfallzeiten durch DB-Upgrades und Tabellensperren ALTER TABLE ADD COLUMN einführen können. –