

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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à.

# Chiavi di ordinamento
<a name="t_Sorting_data"></a>

**Nota**  
È consigliabile creare le tabelle con `SORTKEY AUTO`. In tal caso, Amazon Redshift utilizza l'ottimizzazione automatica della tabella per scegliere la chiave di ordinamento. Per ulteriori informazioni, consultare [Ottimizzazione automatica delle tabelle](t_Creating_tables.md). I dettagli sull'ordinamento sono descritti in dettaglio nella parte restante di questa sezione. 

Quando si crea una tabella, è possibile definire una o più delle sue colonne come *chiavi di ordinamento*. Quando i dati vengono caricati inizialmente nella tabella vuota, le righe vengono archiviate sul disco in modo ordinato. Le informazioni sulle colonne della chiave di ordinamento vengono passate al pianificatore di query, che utilizza questa informazioni per costruire piani che tengano in considerazione il modo in cui sono ordinati i dati. Per ulteriori informazioni, consulta [CREATE TABLE](r_CREATE_TABLE_NEW.md). Per informazioni sulle best practice per la creazione di una chiave di ordinamento, consulta [Scelta della migliore chiave di ordinamento](c_best-practices-sort-key.md).

L'ordinamento consente una gestione efficiente dei predicati a intervallo limitato. Amazon Redshift archivia i dati colonnari nei blocchi del disco da 1 MB. I valori minimo e massimo di ogni blocco vengono archiviati come parte dei metadati. Se una query utilizza un predicato a intervallo limitato, il processore di query può utilizzare i valori minimo e massimo per saltare rapidamente grandi numeri di blocchi durante la scansione della tabella. Ad esempio, si supponga che una tabella memorizzi cinque anni di dati ordinati per data e che una query specifichi un intervallo di un mese. In questo caso, puoi eliminare fino al 98% dei blocchi del disco dalla scansione. Se i dati non sono ordinati, dovranno essere scansionati più blocchi del disco (probabilmente tutti). 

È possibile specificare la chiave di ordinamento composto o interlacciato. Una chiave di ordinamento composta è più efficiente quando i predicati di query utilizzano un *prefisso*, ovvero un sottoinsieme delle colonne della chiave di ordinamento in ordine. Una chiave di ordinamento interlacciato dà lo stesso peso a ogni colonna nella chiave di ordinamento, quindi i predicato di query possono utilizzare qualsiasi sottoinsieme di colonne che costituiscono la chiave di ordinamento, in qualsiasi ordine. 

Per comprendere l'impatto sulle prestazioni della query della chiave di ordinamento scelta, utilizza il comando [EXPLAIN](r_EXPLAIN.md). Per ulteriori informazioni, consultare [Pianificazione di query e flusso di lavoro di esecuzione](c-query-planning.md). 

Per definire un tipo di ordinamento, utilizza la parola chiave INTERLEAVED o COMPOUND con le tue dichiarazioni CREATE TABLE o CREATE TABLE AS. L'impostazione predefinita è COMPOUND. COMPOUND è consigliata quando aggiorni regolarmente le tabelle con le operazioni INSERT, UPDATE o DELETE. Una chiave di ordinamento INTERLEAVED può utilizzare un massimo di otto colonne. A seconda delle dimensioni di dati e cluster, VACUUM REINDEX può impiegare molto più tempo rispetto a VACUUM FULL perché esegue un ulteriore passaggio per analizzare le chiavi di ordinamento interlacciate. L'operazione di ordinamento e unione può richiedere più tempo per le tabelle interlacciate perché l'ordinamento interlacciato potrebbe dover riordinare più righe rispetto a un ordinamento composto.

Per visualizzare le chiavi di ordinamento per una tabella, eseguire la query della vista di sistema [SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md) .

**Topics**
+ [Ordinamento del layout dati multidimensionale](t_Sorting_mutidimensional-sort-key.md)
+ [Chiave di ordinamento composta](t_Sorting_data-compound.md)
+ [Chiave di ordinamento interlacciato](t_Sorting_data-interleaved.md)

# Ordinamento del layout dati multidimensionale
<a name="t_Sorting_mutidimensional-sort-key"></a>

Una chiave di ordinamento del layout di dati multidimensionali è una chiave di ordinamento di tipo AUTO basato su predicati ripetitivi presenti in un carico di lavoro. Se il carico di lavoro contiene predicati ripetitivi, Amazon Redshift può migliorare le prestazioni di scansione delle tabelle eseguendo la co-locazione delle righe di dati che soddisfano i predicati ripetitivi. Anziché archiviare i dati di una tabella in un rigoroso ordine di colonne, una chiave di ordinamento del layout dei dati multidimensionale memorizza i dati analizzando i predicati ripetitivi presenti in un carico di lavoro. In un carico di lavoro è possibile trovare più di un predicato ripetitivo. A seconda del carico di lavoro, questo tipo di chiave di ordinamento può migliorare le prestazioni di molti predicati. Amazon Redshift determina automaticamente se questo metodo della chiave di ordinamento deve essere utilizzato per le tabelle definite con una chiave di ordinamento `AUTO`.

Ad esempio, supponi di disporre di una tabella con i dati ordinati in base alle colonne. Potrebbe essere necessario esaminare molti blocchi di dati per determinare se soddisfano i predicati del carico di lavoro. Tuttavia, se i dati sono archiviati su disco nell'ordine dei predicati, è necessario scansionare un numero inferiore di blocchi per soddisfare la query. In questo caso è utile utilizzare una chiave di ordinamento del layout dei dati multidimensionali.

Per vedere se una query utilizza una chiave del layout dei dati multidimensionali, consulta la colonna `step_attribute` della vista [SYS\$1QUERY\$1DETAIL](SYS_QUERY_DETAIL.md). Quando il valore è `multi-dimensional`, per la query è stato utilizzato un layout di dati multidimensionali.

Per evitare che Amazon Redshift utilizzi una chiave di ordinamento per il layout dei dati multidimensionali, scegli un'opzione di ordinamento della tabella diversa da `SORTKEY AUTO`. Per ulteriori informazioni sulle opzioni SORTKEY, consulta [CREATE TABLE](r_CREATE_TABLE_NEW.md).

# Chiave di ordinamento composta
<a name="t_Sorting_data-compound"></a>

 Una chiave composta è costituita da tutte le colonne elencate nella definizione della chiave di ordinamento, nell'ordine in cui sono elencate. Una chiave di ordinamento composta è più utile quando un filtro di query applica delle condizioni, come filtri e combinazioni, che utilizzano un prefisso delle chiavi di ordinamento. I vantaggi in termini di prestazioni dell'ordinamento composto diminuiscono quando le query si basano solo su colonne di ordinamento secondarie, senza fare riferimento alle colonne primarie. COMPOUND è il tipo di ordinamento predefinito.

Le chiavi di ordinamento composte potrebbero velocizzare le combinazioni, le operazioni GROUP BY e ORDER BY e le funzioni di finestra che utilizzano PARTITION BY e ORDER BY. Ad esempio, un merge join, che è sempre più veloce di un hash join, è conveniente quando i dati vengono distribuiti e preordinati sulle colonne di combinazione. Le chiavi di ordinamento composte aiutano anche a migliorare la compressione. 

Quando aggiungi righe a una tabella ordinata che già contiene dati, la regione non ordinata cresce; questo ha degli effetti importanti sulle prestazioni. L'effetto è maggiore quando la tabella utilizza ordinamento interlacciato, soprattutto quando le colonne di ordinamento includono dati che aumentano in maniera monotona, come le colonne di dati o timestamp. Esegui regolarmente un'operazione VACUUM, soprattutto dopo aver caricato grandi quantità di dati, per ordinare e analizzare nuovamente i dati. Per ulteriori informazioni, consulta [Ridurre le dimensioni della Regione non ordinata](vacuum-managing-vacuum-times.md#r_vacuum_diskspacereqs). Dopo il vacuum per riordinare i dati, è buona norma eseguire un comando ANALYZE per aggiornare i metadati statistici per il pianificatore di query. Per ulteriori informazioni, consultare [Analisi delle tabelle](t_Analyzing_tables.md).

# Chiave di ordinamento interlacciato
<a name="t_Sorting_data-interleaved"></a>

Un ordinamento interlacciato dà lo stesso peso a ogni colonna, o sottoinsieme di colonne, nella chiave di ordinamento. Se più query utilizzano colonne diverse per i filtri, puoi spesso migliorare le prestazioni di quelle query tramite uno stile di ordinamento interlacciato. Quando una query utilizza predicati restrittivi sulle colonne di ordinamento secondarie, l'ordinamento interlacciato migliora in modo significativo le prestazioni delle query rispetto all'ordinamento composto. 

**Importante**  
Non utilizzare una chiave di ordinamento "interlacciato" su colonne con attributi che crescono in maniera monotona, come colonne di identità, date o timestamp.

I miglioramenti delle prestazioni che hai ottenuto implementando una chiave di ordinamento interlacciato, dovrebbero essere confrontati con i tempi di caricamento e di vacuum. 

Gli ordinamenti interlacciati sono più efficaci con query molto selettive, che filtrano su una o più colonne di ordinamento nella clausola WHERE, ad esempio `select c_name from customer where c_region = 'ASIA'`. I benefici dell'ordinamento interlacciato aumenta con il numero delle colonne ordinate che vengono limitate. 

Un ordinamento interlacciato è più efficace con le tabelle grandi. L'ordinamento viene applicato su ogni sezione. Di conseguenza, un ordinamento interlacciato è più efficace quando una tabella è abbastanza grande da richiedere più blocchi da 1 MB per sezione. Qui, il processore di query può saltare una percentuale significativa dei blocchi utilizzando predicati restrittivi. Per visualizzare il numero di blocchi che utilizza una tabella, eseguire la query della vista di sistema [STV\$1BLOCKLIST](r_STV_BLOCKLIST.md).

 Quando si esegue un ordinamento su una singola colonna, un ordinamento interlacciato fornisce prestazioni migliori rispetto a un ordinamento composto, nel caso in cui i valori della colonna abbiano un prefisso lungo in comune. Ad esempio, in URLs genere iniziano con "http://www». Le chiavi di ordinamento composto utilizzano un numero limitati di caratteri dal prefisso, che comporta molte duplicazioni delle chiavi. Gli ordinamenti interlacciati utilizzano uno schema di compressione interno per i valori della mappa di zona, i quali gli consentono di discriminare meglio i valori delle colonne che dispongono di un prefisso lungo in comune.

 Quando migri cluster con provisioning Amazon Redshift ad Amazon Redshift serverless, Redshift converte le tabelle con chiavi di ordinamento interlacciate e DISTSTYLE KEY in chiavi di ordinamento composte. Tuttavia le tabelle con solo chiavi di ordinamento interlacciate rimangono invariate. Per ulteriori informazioni sugli stili di distribuzione, consulta [Utilizzo degli stili di distribuzione dati](https://docs.aws.amazon.com//redshift/latest/dg/t_Distributing_data.html). 
<a name="t_Sorting_data-interleaved-reindex"></a>
**VACUUM REINDEX**  
Quando aggiungi righe a una tabella ordinata che già contiene dati, le prestazioni possono diminuire nel tempo. Questa diminuzione riguarda sia gli ordinamenti composti che quelli interlacciati, ma ha degli effetti più significativi sulle tabelle interlacciate. Un VACUUM ripristina l'ordine, ma l'operazione può impiegare più tempo per le tabelle interlacciate, perché l'unione di nuovi dati interlacciati può causare modifiche ad ogni blocco di dati.

Quando le tabelle vengono caricate inizialmente, Amazon Redshift analizza la distribuzione dei valori nelle colonne della chiave di ordinamento e utilizza queste informazioni per un ordinamento interlacciato ottimale delle colonne della chiave di ordinamento. Quando una tabella cresce, la distribuzione dei valori nelle colonne della chiave di ordinamento può cambiare o differenziarsi, in particolar modo con le colonne timestamp o di dati. Se la differenza diventa troppo ampia, le prestazioni potrebbero risentirne. Per analizzare nuovamente le chiavi di ordinamento e per ripristinare le prestazioni, esegui il comando VACUUM con la parola chiave REINDEX. Dato che è necessaria un'ulteriore analisi da passare sui dati, VACUUM REINDEX può impiegare più tempo rispetto al VACUUM standard per le tabelle interlacciate. Per visualizzare le informazioni sulla differenza della distribuzione della chiave e sull'ultimo tempo di reindicizzazione, eseguire una query della vista di sistema [SVV\$1INTERLEAVED\$1COLUMNS](r_SVV_INTERLEAVED_COLUMNS.md).

Per ulteriori informazioni su come determinare la frequenza dell'esecuzione di VACUUM e quando eseguire VACUUM REINDEX, consultare [Decidere sulla reindicizzazione](vacuum-managing-vacuum-times.md#r_vacuum-decide-whether-to-reindex). 