Istruzioni SELECT PartiQL per DynamoDB - Amazon DynamoDB

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

Istruzioni SELECT PartiQL per DynamoDB

Utilizza l'istruzione SELECT per recuperare i dati da una tabella in Amazon DynamoDB.

L'utilizzo dell'SELECTistruzione può comportare una scansione completa della tabella se nella clausola WHERE non viene fornita una condizione di uguaglianza o IN con una chiave di partizione. L'operazione di scansione esamina ogni elemento per i valori richiesti e può utilizzare la velocità effettiva assegnata per una tabella o un indice di grandi dimensioni in un'unica operazione.

Se desideri evitare la scansione completa della tabella in PartiQL, è possibile:

Per ulteriori informazioni, consulta la sezione Best practice per eseguire query e scansioni di dati nella Guida per gli sviluppatori di DynamoDB.

Sintassi

SELECT expression [, ...] FROM table[.index] [ WHERE condition ] [ [ORDER BY key [DESC|ASC] , ...]

Parametri

espressione

(Obbligatorio) Una proiezione formata dal carattere jolly * o un elenco di proiezione di uno o più nomi di attributi o percorsi di documento dal set di risultati. Un'espressione può essere costituita da chiamate a Usare le funzioni PartiQL con DynamoDB o da campi modificati da Operatori PartiQL aritmetici, di confronto e logici per DynamoDB .

tabella

(Obbligatorio) Il nome della tabella per cui eseguire la query.

indice

(Facoltativo) Il nome dell'indice su cui eseguire una query.

Nota

È necessario aggiungere virgolette doppie al nome della tabella e al nome dell'indice quando si esegue una query su un indice.

SELECT * FROM "TableName"."IndexName"
condizione

(Facoltativo) I criteri di selezione per la query.

Importante

Per garantire che una istruzione SELECT non comporti una scansione completa della tabella, la condizione della clausola WHERE deve specificare una chiave di partizione. Utilizza l'operatore di uguaglianza o IN.

Ad esempio, in presenza di una tabella Orders con una chiave di partizione OrderID e altri attributi non chiave, tra cui Address, le istruzioni seguenti non comportano una scansione completa della tabella:

SELECT * FROM "Orders" WHERE OrderID = 100 SELECT * FROM "Orders" WHERE OrderID = 100 and Address='some address' SELECT * FROM "Orders" WHERE OrderID = 100 or pk = 200 SELECT * FROM "Orders" WHERE OrderID IN [100, 300, 234]

Le seguenti istruzioni SELECT, tuttavia, provocheranno una scansione completa della tabella:

SELECT * FROM "Orders" WHERE OrderID > 1 SELECT * FROM "Orders" WHERE Address='some address' SELECT * FROM "Orders" WHERE OrderID = 100 OR Address='some address'
key

(Facoltativo) Una chiave hash o una chiave di ordinamento da utilizzare per ordinare i risultati restituiti. L'ordine di default è crescente (ASC); specifica DESC se desideri che i risultati vengano rigenerati in ordine decrescente.

Nota

Se si omette la clausola WHERE, saranno recuperati tutti gli elementi della tabella.

Esempi

La seguente query restituisce un elemento, se esistente, dalla tabella Orders specificando la chiave di partizione, OrderID, e utilizzando l'operatore di uguaglianza.

SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1

La seguente query restituisce tutti gli elementi nella tabella Orders che hanno una chiave di partizione specifica, OrderID, i valori che utilizzano l'operatore OR.

SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1 OR OrderID = 2

La seguente query restituisce tutti gli elementi nella tabella Orders che hanno una chiave di partizione specifica, OrderID, i valori che utilizzano l'operatore IN. I risultati restituiti sono in ordine decrescente, in base al valore dell'attributo della chiave OrderID.

SELECT OrderID, Total FROM "Orders" WHERE OrderID IN [1, 2, 3] ORDER BY OrderID DESC

La seguente query mostra una scansione completa della tabella che restituisce tutti gli elementi dalla tabella Orders che hanno un Total maggiore di 500, dove Total è un attributo non chiave.

SELECT OrderID, Total FROM "Orders" WHERE Total > 500

La seguente query mostra una scansione completa della tabella che restituisce tutti gli elementi dalla tabella Orders in un intervallo di ordinamento Total specifico, utilizzando l'operatore IN e un attributo non chiave Total.

SELECT OrderID, Total FROM "Orders" WHERE Total IN [500, 600]

La seguente query mostra una scansione completa della tabella che restituisce tutti gli elementi dalla tabella Orders in un intervallo di ordinamento Total specifico, utilizzando l'operatore BETWEEN e un attributo non chiave Total.

SELECT OrderID, Total FROM "Orders" WHERE Total BETWEEN 500 AND 600

La seguente query restituisce la prima data in cui è stato utilizzato un dispositivo firestick specificando la chiave di partizione CustomerID e la chiave di ordinamento MovieID nella condizione clausola WHERE (DOVE) e utilizzando percorsi documento nella clausola SELECT (SELEZIONA).

SELECT Devices.FireStick.DateWatched[0] FROM WatchList WHERE CustomerID= 'C1' AND MovieID= 'M1'

La seguente query mostra una scansione completa della tabella che restituisce l'elenco degli elementi in cui un dispositivo firestick è stato utilizzato per la prima volta dopo il 12/12/19 utilizzando percorsi di documento nella condizione della clausola WHERE (DOVE).

SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] >= '12/24/19'