「開発/SQL - SQL コマンド(マテリアライズド・ビュー)」からの出題です。
同じ定義のビューとマテリアライズド・ビューに対して同じSELECT文を実行したら、必ず同じ結果が返る。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2022年1月20日
マテリアライズド(materialized)は「実体化された」という意味で、マテリアライズド・ビューは基本的にはビューなのですが、SELECT文による定義だけからなる通常のビューとは違い、定義に加えて実体となるデータが入っていて、構造的にはテーブルと同じです。
ビューからのSELECTを実行すると、内部的にはビューを定義するSELECTを実行するので、テーブルの結合やWHERE句などの条件を評価しながらデータを検索することになりますが、マテリアライズド・ビューからのSELECTは、そこに実体として入っているデータをSELECTするだけなので、通常はマテリアライズド・ビューからのSELECTの方が高速になります。その代わり、マテリアライズド・ビューはデータ量に応じてディスク容量を消費します。
また、マテリアライズド・ビューからの検索を高速にするためにインデックスを作成することもできます。通常のビューは、それを構成する元のテーブルにインデックスを作ることはできますが、ビューに直接、インデックスを作ることはできません。
マテリアライズド・ビューには、それを作成したときにデータが入りますが、その後、元になるテーブルを更新しても自動的にデータが更新されることはなく、REFRESH MATERIALIZED VIEWを実行してはじめてデータが更新されます。通常のビューは常に元のテーブルのデータを参照しますから、ビューからのSELECTは最新のデータを表示しますが、マテリアライズド・ビューからのSELECTは古いデータを表示し、これらの間に差異が発生することがあります。このような性質から、マテリアライズド・ビューを『スナップショット』と表現することもあります。必ずしも最新のデータを必要としないが、処理を高速にしたい、例えば前月末までのデータを様々な角度から分析したい、などといったケースがマテリアライズド・ビューを活用する場面の1つです。
ビューは、元となるテーブルが1つだけで、集約関数や集合操作などを使っていない、など単純なものは更新可能ビューと呼ばれ、SELECTだけでなく、INSERT/UPDATE/DELETEの更新処理が可能です。マテリアライズド・ビューは定義がそのように単純であったとしても、更新処理をサポートしていません。
間違っているものを選ぶ問題なので、正解はCです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.