Oracle の具体化されたビューとは何ですか? それの用途は何ですか?このトピックをネットで検索しましたが、明確なアイデアを得ることができません。それでは、このトピックを明確な例で説明してください。トピックを明確に理解することが私にとってより役立つように。
3 に答える
マテリアライズド ビューは、RDMS が提供するメカニズムであり、追加のストレージ消費と引き換えにクエリ パフォーマンスを向上させます。
たとえば、データを返すのに長い時間がかかる、10 個のテーブル結合を含む非常に大きなクエリがあるとします。クエリをマテリアライズド ビューに変換すると、このクエリの結果はディスク上の特別な db テーブルに自動的にマテリアライズされます。さらに優れているのは、行が追加/更新/削除されると、マテリアライズド ビューに自動的に反映されることです。
ただし、この便利なツールのトレードオフは、基になるテーブルの挿入と更新が遅くなることです。マテリアライズド ビューは、Oracle IMHO の数少ない利点の 1 つです。
2 つのテーブルの結合の例を次に示しますMATERIALIZED VIEW
。
CREATE MATERIALIZED VIEW MV_Test
NOLOGGING
CACHE
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT V.*, P.*, V.ROWID as V_ROWID, P.ROWID as P_ROWID, (2+1) as Calc1, 'Constant1' as Const1
FROM TPM_PROJECTVERSION V
INNER JOIN TPM_PROJECT P ON P.PROJECTID = V.PROJECTID
この同じクエリを毎回実行する代わりに、より高速に実行される新しいビューに対してこの単純なクエリを実行することができます。本当にすばらしいのは、派生列と計算列も追加できることです。
SELECT * FROM MV_Test WHERE ...
PS
MATERIALIZED VIEWS
万能薬ではありません。頻繁に使用される多数の結合を含む非常に遅いクエリがあり、読み取りが書き込みをはるかに上回る場合に使用してください。
マテリアライズド ビューとは
マテリアライズド ビューは、ある時点からのターゲット マスターのレプリカです。マスターは、マスター・サイトのマスター表またはマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビューのいずれかです。マルチマスター・レプリケーションでは、表は他のマスター・サイトによって継続的に更新されますが、マテリアライズド・ビューは、図3-1に示すように、単一のマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトからの個々のバッチ更新(リフレッシュと呼ばれる)を通じて、1つ以上のマスターから更新されます。 . 図 3-1 の矢印は、データベース リンクを表します。
-- http://docs.oracle.com/cd/A97630_01/server.920/a96567/repmview.htm
例 -- 従業員テーブルのマテリアライズド ビューを作成します。更新は好みに合わせて設定できるため、上記のリンクのドキュメントを参照してください。
CREATE MATERIALIZED VIEW employee_mv
REFRESH FORCE
BUILD IMMEDIATE
ON DEMAND
AS
SELECT * FROM employees
マテリアライズド ビューには、データのサブセットのみを含めることもできます
CREATE MATERIALIZED VIEW employee_mv
REFRESH FORCE
BUILD IMMEDIATE
ON DEMAND
AS
SELECT name, ssn, address FROM employees