ヘッダーをスキップ
Oracle TimesTen In-Memory Database SQLリファレンス・ガイド
リリース11.2.1
B56051-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

CREATE MATERIALIZED VIEW

CREATE MATERIALIZED VIEW文は、SelectQuery句で指定された表に対するビューを作成します。 ビューを作成するために使用された元の表は、ディテール表と呼ばれます。 ビューは、ディテール表の変更に関して、同期または非同期でリフレッシュされます。 非同期マテリアライズド・ビューを作成する場合は、まずディテール表にマテリアライズド・ビュー・ログを作成する必要があります。 「CREATE MATERIALIZED VIEW LOG」を参照してください。

必要な権限

SQL構文

CREATE MATERIALIZED VIEW ViewName
      [REFRESH
        [FAST | COMPLETE]
        [NEXT SYSDATE[+NUMTODSINTERVAL(IntegerLiteral),IntervalUnit]]
      AS SelectQuery
      [PRIMARY KEY (ColumnName [,…])]
      [UNIQUE HASH ON (HashColumnName [,…])
      PAGES = PrimaryPages]

パラメータ

CREATE MATERIALIZED VIEW文には、次のパラメータがあります。

パラメータ 説明
ViewName 新しいビューに割り当てる名前。
REFRESH 非同期マテリアライズド・ビューを指定します。
[FAST | COMPLETE] リフレッシュ方法。 FASTは、増分リフレッシュを指定します。 COMPLETEは、完全リフレッシュを指定します。 方法を省略した場合、COMPLETEがデフォルトのリフレッシュ方法です。
NEXT SYSDATE NUMTODSINTERVALを指定せずにNEXT SYSDATEを指定した場合、マテリアライズド・ビューは、ディテール表が変更されるたびに増分リフレッシュされます。 リフレッシュは、ディテール表を変更するトランザクションがコミットされた直後に、別のトランザクションで実行されます。 ディテール表が変更されるたびに完全リフレッシュ(COMPLETE)を指定することはできません。

NEXT SYSDATEを省略した場合、マテリアライズド・ビューが自動的にリフレッシュされることはありません。 手動でリフレッシュする必要があります。

[+NUMTODSINTERVAL(IntegerLiteral),IntervalUnit] このパラメータを指定した場合、マテリアライズド・ビューは指定した時間隔でリフレッシュされます。 IntegerLiteralは整数である必要があります。 IntervalUnitは、'DAY''HOUR''MINUTE''SECOND'のいずれかの値である必要があります。

[NEXT SYSDATE[+NUMTODSINTERVAL(IntegerLiteral),IntervalUnit]を指定しない場合、マテリアライズド・ビューが自動的にリフレッシュされることはありません。 REFRESH MATERIALIZED VIEW文を使用すると、ビューを手動でリフレッシュできます。

SelectQuery ビューで使用される、ディテール表の列を選択します。ビューに対して索引を作成することも可能です。
ColumnName 作成されるビューの主キー列の名前を指定します。 主キーには最大16列を指定できます。ビュー表の結果列の名前は、一意である必要があります。表または所有者の要素を列名の定義に含めることはできません。
HashColumnName ビューに定義された列をこの表のハッシュ・キーに含めます。ハッシュ索引に指定される列は、主キーの列と同じである必要があります。
PrimaryPages 表の想定ページ数を指定します。この数によって、ハッシュ索引に対して作成されるハッシュ・バケットの数が決まります。最小値は1です。想定したページ数が少なすぎると、パフォーマンスが低下します。 詳細は、「CREATE TABLE」を参照してください。

説明

同期マテリアライズド・ビューとディテール表の制限事項

マテリアライズド・ビューの定義に使用される問合せには、いくつかの制限があります。

完全(COMPLETE)リフレッシュでの非同期マテリアライズド・ビューには、その他の制限はありません。

増分(高速)リフレッシュで非同期マテリアライズド・ビューを作成する場合は、マテリアライズド・ビュー作成のSELECT文の制限以外に、次の制限が適用されます。

customer表とbookorder表の列からマテリアライズド・ビューを作成します。

CREATE MATERIALIZED VIEW custorder AS
  SELECT custno, custname, ordno, book
    FROM customer, bookorder
    WHERE customer.custno=bookorder.custno;

t1表のx1およびy1列からマテリアライズド・ビューを作成します。

CREATE MATERIALIZED VIEW v1 AS SELECT x1, y1 FROM t1
  PRIMARY KEY (x1) UNIQUE HASH (x1) PAGES=100;

t1表とt2表のx1およびy1列の外部結合からマテリアライズド・ビューを作成します。

CREATE MATERIALIZED VIEW v2 AS SELECT x1, y1 FROM t1, t2
  WHERE x1=x2(+);

増分リフレッシュでmv1という名前の非同期マテリアライズド・ビューを作成します。 マテリアライズド・ビューは、employeesへの更新がコミットされた直後にリフレッシュされます。 mv1内の列は、employee_idおよびemailです。 (非同期マテリアライズド・ビューを作成する前に、マテリアライズド・ビュー・ログを作成する必要があります。)

CREATE MATERALIZED VIEW mv1
  REFRESH FAST NEXT SYSDATE
  AS SELECT employee_id, email FROM employees;
107 rows materialized.

関連項目


「CREATE MATERIALIZED VIEW LOG」
「CREATE TABLE」
「CREATE VIEW」
「DROP [MATERIALIZED] VIEW」
「REFRESH MATERIALIZED VIEW」