Oracle では、挿入のみのマテリアライズド ビューとは何ですか?
MAX
集計関数を使用する次の具体化されたビューがあります。
CREATE MATERIALIZED VIEW VM_FAST_MAX
REFRESH FAST ON COMMIT
AS
SELECT d.ID_INPUT, MAX(d.ID_LOAD) AS ID_LOAD, COUNT(*) AS CNT
FROM MASTER_TABLE d
GROUP BY d.ID_INPUT;
『 Oracle Data Warehousing Guide』によると、これは挿入専用のマテリアライズド ビューである必要があります。
マテリアライズド ビューに次のいずれかがある場合、高速リフレッシュは従来の DML 挿入および直接ロードでのみサポートされます。
- MIN または MAX 集計を含むマテリアライズド ビュー
- SUM(expr) を持ち、COUNT(expr) を持たないマテリアライズド ビュー
- COUNT(*) のないマテリアライズド ビュー
このようなマテリアライズド ビューは、挿入のみのマテリアライズド ビューと呼ばれます。
このようなマテリアライズドビューは、マスターテーブルに挿入する場合にのみ高速リフレッシュできると思います。代わりに、DBMS_MVIEW.EXPLAIN_MVIEW
この具体化されたビューは常に高速更新可能であることがわかります。
EXEC DBMS_MVIEW.EXPLAIN_MVIEW('VM_FAST_MAX');
SELECT CAPABILITY_NAME, POSSIBLE
FROM MV_CAPABILITIES_TABLE
WHERE MVNAME = 'VM_FAST_MAX';
CAPABILITY_NAME P
------------------------------ -
REFRESH_FAST_AFTER_INSERT Y
REFRESH_FAST_AFTER_ANY_DML Y
また、コミット時の高速リフレッシュは、マスター テーブルの更新後でも機能します。
要点をまとめると:
- 挿入のみのマテリアライズド ビューと、プレーンで高速に更新可能なマテリアライズド ビューの違いは何ですか?
- Oracle のドキュメントが嘘をついているのはなぜですか? :)
Oracle 11.2 Enterprise Edition を使用。