ホームページ >データベース >mysql チュートリアル >PostgreSQL のストアド計算列は複雑なクエリのパフォーマンスをどのように向上させることができますか?
クエリを保存する仮想列
PostgreSQL には、複雑な計算やサブクエリをテーブルのスキーマに組み込むためのさまざまな方法が用意されています。 1 つのアプローチは、通常のテーブルのようにクエリできるデータの仮想表現を提供するビューを作成することです。ただし、ビューはデータベースに保存されず、クエリごとに再計算されるため、頻繁に使用される複雑なクエリの効率が低下する可能性があります。
もう 1 つのアプローチは、保存された計算列を使用することです。これにより、他の列または外部データ ソースを含む式に基づいて列の値を定義できます。格納された計算列はテーブルに物理的に格納され、基になるデータが変更されるたびにその値が計算されて更新されます。
格納された計算列を使用してサブクエリを疑似列として格納するには、サブクエリをラップする関数を作成し、それを計算列定義で参照できます。これを行う方法の例を次に示します:
<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>
このメソッドを使用すると、通常の列と同じように派生列をクエリできます。
<code class="language-sql">SELECT a_id, col1, col2, col3 FROM tbl_a;</code>
ビューと比較して、格納された計算列を使用する利点は、列の値が物理的に格納され、クエリごとに再計算する必要がないため、頻繁に使用される複雑なクエリのパフォーマンスが向上することです。さらに、保存された計算列はテーブル スキーマに完全に統合されているため、インデックス、外部キー制約、その他のデータベース操作に使用できます。
以上がPostgreSQL のストアド計算列は複雑なクエリのパフォーマンスをどのように向上させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。