はじめに:なぜ「ビュー」を知る必要があるの?
Snowflakeを使ってクエリを書いていると、「同じJOINやWHERE句を毎回書くのが面倒…」「複雑なSQLを他のメンバーにも使ってもらいたい」と感じることがありますよね。そんなときに大活躍するのが ビュー (View) と マテリアライズドビュー (Materialized View) です。
この2つは名前が似ていますが、中身は全くの別物。今回は「どう違うの?」「どう使い分けるの?」を、フレンドリーに解説していきます!読み終わるころには、あなたも自信をもってビューを設計できるようになりますよ。

ビュー (View) とは?
ビューは、ひとことで言うと 「保存しておけるSELECT文」 です。テーブルそのものではなく、SQLの定義(レシピ)だけを保存するイメージ。ビューを参照すると、毎回その裏で元のSELECT文が実行され、最新の結果が返ってきます。
たとえば「東京エリアのアクティブユーザーだけを抽出するクエリ」をビューにしておけば、チームの誰もが SELECT * FROM v_active_users_tokyo と書くだけで同じ結果を得られます。
CREATE OR REPLACE VIEW v_active_users_tokyo AS
SELECT user_id, name, last_login_at
FROM users
WHERE region = 'Tokyo'
AND status = 'ACTIVE';
ビューのメリットは、常に最新データが取れること、ストレージをほとんど消費しないこと、そして複雑なJOINを隠蔽してくれることです。JOINの種類やGROUP BYやウィンドウ関数を駆使した重いクエリも、ビューにまとめておけばユーザーは中身を意識しなくて済みます。
マテリアライズドビュー (Materialized View) とは?
一方のマテリアライズドビューは、「クエリの結果そのものを物理的に保存しておく特殊なビュー」です。読むのは結果のスナップショット。元テーブルが更新されると、Snowflakeがバックグラウンドで自動的に再計算してくれます。
つまり、毎回ゼロから計算する通常ビューに対して、マテリアライズドビューは「事前に計算しておいた答え」を返すので、特に重い集計クエリで爆速になります。
CREATE MATERIALIZED VIEW mv_daily_sales AS
SELECT sale_date,
SUM(amount) AS total_amount,
COUNT(*) AS order_count
FROM sales
GROUP BY sale_date;
ただし注意点が3つ。①Enterprise Edition以上が必要、②裏で再計算が走るため追加のクレジット消費がある、③利用できるSQLに制約(JOINや一部の関数が使えない等)があります。詳しくは公式ドキュメントを確認しましょう。
使い分けの判断基準

ビューが向いているケース
- クエリの再利用やセキュリティ目的(列を隠す等)で使いたい
- 元データが頻繁に変わり、常に最新を見たい
- ストレージや追加コストをかけたくない
マテリアライズドビューが向いているケース
- 同じ集計・絞り込みクエリを何度も繰り返し実行する
- 元テーブルが巨大で、毎回スキャンするとコストが大きい
- BIダッシュボードなど、応答速度を優先したい
ちなみに、似たような高速化手段としてマイクロパーティションのプルーニングもありますが、これは「テーブル設計レベル」での最適化。マテリアライズドビューは「結果のキャッシュ」という別アプローチだと押さえておきましょう。
Snowsightでの確認方法
作成したビューは、Snowsightの左側メニュー「Data」→ 該当のデータベース → スキーマを開くと「Views」と「Materialized Views」というセクションで一覧確認できます。クリックすると定義SQLや列情報が見られるので、チームに共有するときも便利です。
まとめ
今回は通常のビューとマテリアライズドビューの違いを見てきました。ポイントを最後におさらい!
- ビュー:SELECT文の保存。常に最新、ストレージ消費なし
- マテリアライズドビュー:結果も保存。高速だがコストと制約あり
- 「クエリの整理整頓」ならビュー、「重い集計の高速化」ならマテリアライズドビュー
まずは通常のビューから始めて、「あれ、このクエリ毎回重いな…」と感じたタイミングでマテリアライズドビューを検討するのが王道です。ぜひ手元のSnowflake環境で試してみてくださいね!
参考リンク
- Snowflake公式: ビューの概要
- Snowflake公式: マテリアライズドビューの操作
- Snowflake公式: CREATE VIEW
- Snowflake公式: CREATE MATERIALIZED VIEW
関連記事
- Snowflakeのテーブル種類|通常・一時・トランジェントの違いを解説 – ビューと並行して押さえたいテーブルの基礎
- SnowflakeのJOIN完全ガイド|INNER/LEFT/RIGHT/FULL OUTERの使い分け – ビュー定義でよく使うJOINの整理に
- SnowflakeのGROUP BYとウィンドウ関数の違い – マテリアライズドビューが効きやすい集計処理の理解に
- Snowflakeのマイクロパーティションとは?自動最適化の仕組みを解説 – 別のアプローチでクエリを高速化する仕組み
- Snowsightの画面構成と基本操作を初心者向けにやさしく解説 – ビュー一覧の確認に役立つUI解説
- Snowflakeエディションの違いと選び方を初心者向けに解説 – マテリアライズドビュー利用に必要なエディションを確認

