Virtuelle Spalte zum Speichern der Abfrage
PostgreSQL bietet viele Möglichkeiten, komplexe Berechnungen oder Unterabfragen in das Schema einer Tabelle zu integrieren. Ein Ansatz besteht darin, eine Ansicht zu erstellen, die eine virtuelle Darstellung der Daten bereitstellt, die wie eine normale Tabelle abgefragt werden kann. Allerdings wird die Ansicht nicht in der Datenbank gespeichert und für jede Abfrage neu berechnet, was bei komplexen Abfragen, die häufig verwendet werden, möglicherweise die Effizienz verringert.
Ein anderer Ansatz besteht darin, eine gespeicherte berechnete Spalte zu verwenden, die es Ihnen ermöglicht, den Wert einer Spalte basierend auf einem Ausdruck zu definieren, der andere Spalten oder externe Datenquellen enthält. Eine gespeicherte berechnete Spalte wird physisch in der Tabelle gespeichert und ihr Wert wird berechnet und aktualisiert, wenn sich die zugrunde liegenden Daten ändern.
Um gespeicherte berechnete Spalten zum Speichern einer Unterabfrage als Pseudospalte zu verwenden, können Sie eine Funktion erstellen, die die Unterabfrage umschließt und in der Definition der berechneten Spalte darauf verweist. Hier ist ein Beispiel dafür:
<code class="language-sql">CREATE FUNCTION col3(tbl_a) RETURNS int8 LANGUAGE SQL STABLE AS $$ SELECT sum(colx) FROM tbl_b b WHERE b.a_id = .a_id $$; ALTER TABLE tbl_a ADD COLUMN col3 INT8 STORED AS col3(tbl_a);</code>
Mit dieser Methode können Sie abgeleitete Spalten wie normale Spalten abfragen:
<code class="language-sql">SELECT a_id, col1, col2, col3 FROM tbl_a;</code>
Im Vergleich zu Ansichten besteht der Vorteil der Verwendung gespeicherter berechneter Spalten darin, dass die Spaltenwerte physisch gespeichert werden und nicht für jede Abfrage neu berechnet werden müssen, wodurch die Leistung häufig verwendeter komplexer Abfragen verbessert wird. Darüber hinaus sind gespeicherte berechnete Spalten vollständig in das Tabellenschema integriert, sodass sie für Indizes, Fremdschlüsseleinschränkungen und andere Datenbankoperationen verwendet werden können.
Das obige ist der detaillierte Inhalt vonWie können in PostgreSQL gespeicherte berechnete Spalten die Leistung für komplexe Abfragen verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!