見出し画像

それで、マテリアライズドビューっていつ使うのさ?

マテリアライズドビューについての記事を見るといつも思うんですよね。
「いろんなメリットやデメリットがあるのは分かったけど、いつマテリアライズドビューを使っていつ通常のテーブルを使えばいいのさ!」

誤解を恐れずにいうと、マテリアライズドビューが無理なく使えるなら率先して使っていいのではないでしょうか!

マテリアライズドビューにはメリットがたくさんあります。
多くのDBで自動更新されるのでINSERTやUPDATEなどの処理が必要ありません。
またクエリが最適化されているのでパフォーマンス高くクエリを実行できます。

だから使えるなら使えばいいのです。
でもDBの仕様上できない操作もあります。

例えばINSERTやUPDATE、DELETEといったDML操作を行えません。
いわば毎度全件置き換えることになります。
また複雑なロジックや特定の関数が制限されています。

というわけで、結局のところ以下のユースケースに落ち着きます。

  • 頻繁に実行されるちょっと複雑な集計クエリ

  • リアルタイムに近いデータ取得

  • テーブルの一部のデータに対する頻繁なアクセス

逆に次の用途には向きません。

  • 複数のデータソースからのデータが最初に集まるテーブル

  • UPDATEやDELETEが必要なテーブル

  • 非常に複雑なロジックや特定の関数使用

  • 履歴データが必要なテーブル

使わないチームはとことん使わないマテリアライズドビューですが、OLAPではもっと使われていい気がします。
どんどん使ってみましょう!

いいなと思ったら応援しよう!

Puuuii | 伝える技術と心理学で戦うデータエンジニア
え、チップくれるん? ありがとうなぁ! この恩は3日ぐらい忘れへんから🫡