Ich habe eine Tabelle mit vielen Spalten und mehrere Millionen Zeilen wieUp-to-date Wörterbuch der unterschiedlichen Werte für Spalte
CREATE TABLE foo (
id integer,
thing1 text,
thing2 text,
...
stuff text);
Wie kann ich die Relevanz von Wörterbuch der eindeutigen Werte von stuff
Spalte verwalten, die ursprünglich bevölkert dies wie:
INSERT INTO stuff_dict SELECT DISTINCT stuff from foo;
Soll ich (überprüfen, ob neue stuff
Wert bereits in stuff_dict
vor jedem insert/update) oder Verwendung löst für jedes insert/update/delete aus foo
Tabelle manuell synchronisieren. Was ist in letzterem Fall das beste Design für einen solchen Trigger?
UPDATE: Ansicht passt hier nicht, weil die SELECT * FROM stuff_dict
sollte so schnell wie möglich laufen (auch CREATE INDEX ON foo(stuff)
hilft nicht viel, wenn foo hat Dutzende von Millionen von Datensätzen).
Trotz seines Namens 'Refresh concurrently' materialisierte Ansicht wird die Ausführung blockiert, bis es fertig ist (Die Lesevorgänge anderer Sitzungen werden erst blockiert, wenn die Aktualisierung abgeschlossen ist). Es ist tatsächlich langsamer als ohne 'gleichzeitige' auf größeren Datensätzen. - Aber ja, materialisierte Sichten werden für den OP-Anwendungsfall erstellt. – pozs
@pozs - Leider hatte ich nie Gelegenheit, diese Option in der Praxis zu nutzen. Der Begriff ist in der Tat irreführend. Danke für die Korrektur. – klin