ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

SQL Serverのマテリアライズドビューについて

SQL Serverにおけるマテリアライズドビューについて軽くお話していきたいと思います。

マテリアライズドビューについて

まずは、マテリアライズドビューを簡単に紹介します。これは「実体を持つビュー」とよく言われています。通常のビューが実体を持たないのに対して、実体を持つビューであるマテリアライズドビューはどのようなものでしょうか。

マテリアライズドビューは簡単に言えば、テーブルの「ある時点の断面」を切り取ったデータを持つビュー、というイメージが合っていると思います。実体を持っているため、実体を持たないビューへの問い合わせより素早くデータを取得できることになるようです。

また、通常はビュー自体にインデックスを付与することはできませんが、マテリアライズドビューにはインデックスを付与することができます。実体を持つビューということなので、ほぼテーブルと同じような扱いになります。

SQL Serverでマテリアライズドビューを定義する?

それでは、マテリアライズドビューについて簡単に説明しましたので実際にSQL Serverでどのように定義して使うかを紹介しようと思います。

しかし、実はSQL Serverではマテリアライズドビューが実装されていないようです。。少しネットを見てみましたが、OraclePostgreSQLでは、実装されているようでした。

Microsoftのドキュメントにマテリアライズドビューがあるので、てっきり使えるのかなと思いましたが以下キャプチャにある通り、適用対象が「Azure Synapse Analytics」のみとなっています。ですので、通常のSQL Serverでは使えないということだと思います。

Microsoftのドキュメント

それでは、SQL Serverでマテリアライズドビューみたいな機能が欲しい場合はどうするか?ですが、どうやらネットで調べている限りはインデックス付きビューを使ったりするそうです。

通常は、ビューにインデックスを付与することはできませんが、SQL Serverではインデックスを付与できたりするみたいです。ただし、やや使い方が難しそうなのでドキュメントを熟読する必要がありそうでした。

おわりに

いかがでしたでしょうか。ちょっと拍子抜けした記事となってしまいました。SQL Serverでマテリアライズドビュー使えないようなのでやや驚きました。SQL Serverで実装していないことから、そこまでマテリアライズドビューに対して需要がなかったりするのでしょうか。

確かに特に使わなくても、他の機能で代用できたりできるためいわゆる必須機能ではないので実装していないのでしょうか。

最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。