本稿はデータベースソフトウェア「SQL Anywhere」およびデータベース全般に関する英語ドキュメントを翻訳する形で提供しています。図など、部分的に英語のままになっていますが、製品のSQL Anywhere自体は完全に日本語化されていますのでご安心ください。
SQL Anywhereのバージョン12は、より幅広いクラスのマテリアライズドビューの定義をサポートしています。特に、左外部ジョイン(LEFT OUTER JOIN
)と右外部ジョイン(RIGHT OUTER JOIN
)を含む即時マテリアライズドビューをサポートしています。このテーマについては、私の同僚であるAnil Goelが、8月の第2週にワシントンDCで開催されるSybase Techwave 2010カンファレンスにおいて2部構成のセッションで大いに語ってくれることになっています。そののため、以下はそのAnilの講演に向けてのごく簡単な序説だと思ってください。
即時反映が可能なビューのクラス
SQL Anywhere 12の即時マテリアライズドビューは、リレーショナル射影、セレクション、内部ジョイン、左外部ジョイン、右外部ジョイン、グループ演算子を含む、単一のSELECT
ブロックから構成されていなくてはなりません。マテリアライズドビューのSELECT
文がGROUP BY
句を含む場合は、以下の2つの制限があります。
-
このクエリでは
HAVING
句も含むことができない -
このクエリの
SELECT
リストはシンプルなCOUNT(*)
集約関数を含まなければならない
クエリ内で指定したその他の条件式によっては、さらに追加の制約があります。以下で例を1つ紹介しますが、詳細はSQL Anywhereのマニュアルに譲ることにします。
即時マテリアライズドビューの定義に以下を含むことはできません。
-
GROUPING SETS
句、CUBE
句、またはROLLUP
句 -
SELECT DISTINCT
句(代わりにGROUP BY
句が使用可能) -
ローを制限する句(
TOP
句、START AT
句、LIMIT
句、またはOFFSET
句) - セルフジョインと再帰ジョイン
- 集約関数を使った複雑な条件式