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à.
CREATE INDEX
CREATE INDEXdefinisce un nuovo indice. In Aurora DSQL, la creazione dell'indice è sempre asincrona, quindi è necessario specificare la parola chiave. ASYNC Per informazioni su come Aurora DSQL esegue le compilazioni asincrone di indici e su come monitorarle, consulta. Indici asincroni in Aurora SQL
Sintassi supportata
CREATE [ UNIQUE ] INDEX ASYNC [ [ IF NOT EXISTS ] name ] ON table_name ( { column_name | ( expression ) } [ NULLS { FIRST | LAST } ] [, ...] ) [ INCLUDE ( column_name [, ...] ) ] [ NULLS [ NOT ] DISTINCT ]
Description
CREATE INDEXcostruisce un indice sulle colonne specificate della tabella specificata. Gli indici vengono utilizzati principalmente per migliorare le prestazioni del database, sebbene un uso inappropriato possa comportare un rallentamento delle prestazioni.
I campi chiave per l'indice vengono specificati come nomi di colonne o, in alternativa, come espressioni scritte tra parentesi. È possibile specificare più campi per creare un indice a più colonne.
Un campo indice può essere un'espressione calcolata dai valori di una o più colonne della riga della tabella. Utilizzate questa funzionalità per ottenere un accesso rapido ai dati in base ad alcune trasformazioni dei dati di base. Ad esempio, un indice calcolato su upper(col) consente alla clausola di WHERE upper(col) = 'JIM' utilizzare un indice.
Tutte le funzioni e gli operatori utilizzati nella definizione di un indice devono essere immutabili. Cioè, i loro risultati devono dipendere solo dalle loro argomentazioni e mai da alcuna influenza esterna, come il contenuto di un'altra tabella o l'ora corrente. Questa restrizione garantisce che il comportamento dell'indice sia ben definito. Per utilizzare una funzione definita dall'utente in un'espressione di indice, ricordati di contrassegnare la funzione IMMUTABLE quando la crei.
Parameters
UNIQUE-
Fa sì che il sistema controlli i valori duplicati nella tabella quando crea l'indice, se i dati esistono già e ogni volta che li aggiungi. I tentativi di inserire o aggiornare dati che genererebbero voci duplicate generano un errore.
IF NOT EXISTS-
Non generate un errore se esiste già una relazione con lo stesso nome. In questo caso viene emesso un avviso. Nota che non c'è alcuna garanzia che l'indice esistente assomigli a quello che sarebbe stato creato. Il nome dell'indice è obbligatorio quando
IF NOT EXISTSviene specificato. INCLUDE-
La
INCLUDEclausola opzionale specifica un elenco di colonne da includere nell'indice come colonne non chiave. Non è possibile utilizzare una colonna non chiave in una qualifica di ricerca tramite scansione dell'indice e Aurora DSQL non la considera ai fini di qualsiasi vincolo di unicità o esclusione applicato dall'indice. Tuttavia, una scansione solo indicizzata può restituire il contenuto di colonne non chiave senza dover visitare la tabella dell'indice, poiché sono disponibili direttamente dalla voce dell'indice. L'aggiunta di colonne non chiave consente quindi di eseguire scansioni solo indicizzate alla ricerca di interrogazioni che altrimenti non potrebbero essere utilizzate.Le espressioni non sono supportate come colonne incluse, perché non possono essere utilizzate nelle scansioni solo indicizzate.
name-
Il nome dell'indice da creare. Non puoi includere un nome di schema qui. Aurora DSQL crea sempre l'indice nello stesso schema della tabella principale. Il nome dell'indice deve essere distinto dal nome di qualsiasi altra relazione, ad esempio una tabella, una sequenza, un indice o una vista, in quello schema. Se si omette il nome, Aurora DSQL sceglie un nome adatto in base al nome della tabella principale e ai nomi delle colonne indicizzate.
table_name-
Il nome, facoltativamente qualificato dallo schema, della tabella da indicizzare.
column_name-
Il nome di una colonna della tabella.
expression-
Un'espressione basata su una o più colonne della tabella. In genere è necessario scrivere l'espressione racchiusa tra parentesi, come mostrato nella sintassi. Tuttavia, è possibile omettere le parentesi se l'espressione ha la forma di una chiamata di funzione.
NULLS FIRST-
Specifica che i valori nulli vengono ordinati prima dei valori non nulli.
NULLS LAST-
Specifica che i valori nulli vengono ordinati dopo i valori non nulli.
NULLS DISTINCTNULLS NOT DISTINCT-
Specifica se i valori nulli sono considerati distinti, ovvero non uguali, per un indice univoco. L'impostazione predefinita è che sono distinti, in modo che un indice univoco possa contenere più valori nulli in una colonna.
Esempi
Per creare un indice univoco title nella colonna della tabella. films
CREATE UNIQUE INDEX ASYNC title_idx ON films (title);
Per creare un indice univoco nella colonna title con le colonne incluse director e rating nella tabellafilms.
CREATE UNIQUE INDEX ASYNC title_idx ON films (title) INCLUDE (director, rating);
Creare un indice sull'espressionelower(title), che consenta ricerche efficienti senza distinzione tra maiuscole e minuscole.
CREATE INDEX ASYNC ON films ((lower(title)));
Questo esempio omette il nome dell'indice, quindi Aurora DSQL sceglie un nome, in genere. films_lower_idx
Per creare un indice con un ordinamento non predefinito di valori nulli.
CREATE INDEX ASYNC title_idx_nulls_low ON films (title NULLS FIRST);