本稿はデータベースソフトウェア「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句) - セルフジョインと再帰ジョイン
- 集約関数を使った複雑な条件式

