Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

マテリアライズドビューを使用した SUPER 列のシュレッダー処理 - Amazon Redshift

マテリアライズドビューを使用した SUPER 列のシュレッダー処理

Amazon Redshift では、マテリアライズドビューを使用してデータを SUPER 列にシュレッダー処理することで、クエリのパフォーマンスを向上させ、ストレージ要件を減らすことができます。シュレッダー処理とは、半構造化 JSON や XML などの複雑なデータ型を、より小さくフラットな列に分割するプロセスを指します。SUPER 列は、シュレッダー処理されたデータを高速スキャンできるよう最適化された特殊な形式の列型ストレージです。

以下のセクションでは、Amazon Redshift でマテリアライズドビューを使用してデータを SUPER 列にシュレッダー処理する手順と考慮事項について説明します。

次の例は、ネストされたデータをシュレッディングするマテリアライズドビューを示しています。結果の列は引き続き SUPER データ型です。

SELECT c.c_name, o.o_orderstatus FROM customer_orders_lineitem c, c.c_orders o;

以下の例は、シュレッドされたデータから従来の Amazon Redshift スカラー列を作成するマテリアライズドビューを示しています。

SELECT c.c_name, c.c_orders[0].o_totalprice FROM customer_orders_lineitem c;

単一のマテリアライズドビュー super_mv を作成して、両方のクエリを高速化できます。

最初のクエリに応答するには、属性 o_orderstatus を実体化する必要があります。ネストされたナビゲーションやネスト解除を伴わないため、属性 c_name を省略できます。また、ベーステーブルをマテリアライズドビューと結合できるようにするには、customer_orders_lineitem の属性 c_custkey をマテリアライズドビューに含める必要があります。

2 番目のクエリに答えるには、c_orders の属性 o_totalprice と配列インデックス o_idx も実体化する必要があります。したがって、c_orders のインデックス 0 にアクセスすることができます。

CREATE MATERIALIZED VIEW super_mv distkey(c_custkey) sortkey(c_custkey) AS ( SELECT c_custkey, o.o_orderstatus, o.o_totalprice, o_idx FROM customer_orders_lineitem c, c.c_orders o AT o_idx );

マテリアライズドビュー super_mv の属性 o_orderstatus および o_totalprice は SUPER です。

マテリアライズドビュー super_mv は、ベーステーブル customer_orders_lineitem が変更されると、増分的に更新されます。

REFRESH MATERIALIZED VIEW super_mv; INFO: Materialized view super_mv was incrementally updated successfully.

最初の PartiQL クエリを通常の SQL クエリとして書き換えるには、次のように customer_orders_lineitem と super_mv を結合します。

SELECT c.c_name, v.o_orderstatus FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey;

同様に、2 番目の PartiQL クエリを書き換えることができます。次の例では、o_idx = 0 のフィルターを使用します。

SELECT c.c_name, v.o_totalprice FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey WHERE v.o_idx = 0;

CREATE MATERIALIZED VIEW コマンドで、ディストリビューションキーとして c_custkey を指定し、super_mv のソートキーを指定します。Amazon Redshift は、c_custkey が customer_orders_lineitem のディストリビューションキーおよびソートキーでもあると仮定して、効率的なマージ結合を実行します。そうでない場合は、c_custkey を customer_orders_lineitem のソートキーおよびディストリビューションキーとして次のように指定できます。

ALTER TABLE customer_orders_lineitem ALTER DISTKEY c_custkey, ALTER SORTKEY (c_custkey);

EXPLAIN ステートメントを使用して、書き換えられたクエリに対して Amazon Redshift がマージ結合を実行することを確認します。

EXPLAIN SELECT c.c_name, v.o_orderstatus FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey; QUERY PLAN ------------------------------------------------------------------------------------------------------ XN Merge Join DS_DIST_NONE (cost=0.00..34701.82 rows=1470776 width=27) Merge Cond: ("outer".c_custkey = "inner".c_custkey) -> XN Seq Scan on mv_tbl__super_mv__0 derived_table2 (cost=0.00..14999.86 rows=1499986 width=13) -> XN Seq Scan on customer_orders_lineitem c (cost=0.00..999.96 rows=99996 width=30) (4 rows)
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.