クエリ結果をビューとして保存すると、クエリ結果を含むテーブルと比較して、より多くのメモリ領域が必要になりますか?
ビューに関するもう 1 つの質問は、ビューとして保存されているクエリの結果に基づいて新しいクエリを作成できるかということです。
クエリ結果をビューとして保存すると、クエリ結果を含むテーブルと比較して、より多くのメモリ領域が必要になりますか?
ビューに関するもう 1 つの質問は、ビューとして保存されているクエリの結果に基づいて新しいクエリを作成できるかということです。
ビューはクエリの結果を保存するのではなく、クエリを保存します。
一部の RDBMS では、(一部のクエリに対して) クエリ結果を格納する方法が許可されています。これは、ではマテリアライズド ビュー、 ではインデックス付きビューOracle
と呼ばれます。SQL Server
PostgreSQL
それらはサポートされていません(ただし、@CalvinChengが述べたように、トリガーまたはルールを使用してそれらをエミュレートできます)。
はい、クエリでビューを使用できます。ただし、ビューは複雑なクエリを名前で参照するための便利な方法であり、その結果を格納する方法ではありません。
質問 1 の場合
最初の質問に答えるために、クエリ結果をビューとして保存することはできませんが、PostgreSQL の機能を使用して同様の機能を実現できますtrigger
。
PostgreSQL は の作成をviews
ネイティブにサポートしていますが、 materialized views
(結果を保存するビュー) の作成はサポートしていませんが、これはトリガーを使用して処理できます。http://wiki.postgresql.org/wiki/Materialized_Viewsを参照してください。
ビューは RAM (「メモリ」) を占有しません。
質問 2 の場合
2 番目の質問に答えるには、postgresql でビューを更新するには、 http:CREATE RULE
//www.postgresql.org/docs/devel/static/sql-createrule.htmlを使用する必要があります。
CREATE RULE は、指定されたテーブルまたはビューに適用される新しいルールを定義します。CREATE OR REPLACE RULE は、新しいルールを作成するか、同じテーブルの同じ名前の既存のルールを置き換えます。
PostgreSQL ビューは保存されたクエリです。作成後、ビューから選択することは、元のクエリから選択することとまったく同じであり、毎回クエリが返されます。したがって、ビューはメモリを占有しません。
クエリ結果をビューとして保存することはできません。ビューは単なるクエリですが、マテリアライズド ビューを使用して同様の機能を実現できます。マテリアライズド ビューは、オンデマンドでのみ更新されます。次に、マテリアライズド ビュー全体を更新する必要があります。古い行を 1 つだけ更新する方法はありません。
したがって、その場合、行を無効にする変更が発生するたびに、熱心にビューを更新する必要があります。トリガーを使用して実行できます。