Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Divisione in colonne SUPER con viste materializzate - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Divisione in colonne SUPER con viste materializzate

Con Amazon Redshift, puoi migliorare le prestazioni delle query e ridurre i requisiti di storage suddividendo i dati in colonne SUPER utilizzando viste materializzate. La distruzione si riferisce al processo di suddivisione di tipi di dati complessi come JSON o XML semistrutturati in colonne più piccole e piatte. Le colonne SUPER sono una forma specializzata di archiviazione colonnare ottimizzata per la scansione rapida di dati distrutti.

Le sezioni seguenti descrivono i passaggi e le considerazioni per la suddivisione dei dati in colonne SUPER utilizzando viste materializzate in Amazon Redshift.

Nell'esempio seguente viene illustrata una vista materializzata che suddivide i dati nidificati con le colonne risultanti ancora del tipo di dati SUPER.

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

L'esempio seguente mostra una vista materializzata che crea colonne scalari Amazon Redshift convenzionali dai dati suddivisi.

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

È possibile creare una singola vista materializzata super_mv per accelerare entrambe le query.

Per rispondere alla prima query, è necessario materializzare l'attributo o_orderstatus. È possibile omettere l'attributo c_name perché non comporta la navigazione nidificata né l'annullamento della nidificazione. È inoltre necessario includere nella vista materializzata l'attributo c_custkey di customer_orders_lineitem per poter unire la tabella di base alla vista materializzata.

Per rispondere alla seconda query, è necessario materializzare anche l'attributo o_totalprice e l'indice di array o_idx di c_orders. Pertanto, è possibile accedere all'indice 0 di c_orders.

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 );

Gli attributi o_orderstatus e o_totalprice della vista materializzata super_mv sono SUPER.

La vista materializzata super_mv verrà aggiornata in modo incrementale dopo le modifiche apportate alla tabella di base customer_orders_lineitem.

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

Per riscrivere la prima query PartiQL come una normale query SQL, unire customer_orders_lineitem con super_mv come segue.

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

Allo stesso modo, è possibile riscrivere la seconda query PartiQL. Nell'esempio seguente viene utilizzato un filtro su 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;

Nel comando CREATE MATERIALIZED VIEW specificare c_custkey come chiave di distribuzione e chiave di ordinamento per super_mv. Amazon Redshift esegue un join di unione efficiente, supponendo che c_custkey sia anche la chiave di distribuzione e la chiave di ordinamento di customer_orders_lineitem. In caso contrario, è possibile specificare c_custkey come chiave di ordinamento e chiave di distribuzione di customer_orders_lineitem come segue.

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

Utilizza l'istruzione EXPLAIN per verificare che Amazon Redshift esegua un join di unione nelle query riscritte.

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)
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.