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'SELECT
istruzione 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:
-
Crea le tue istruzioni
SELECT
per non provocare scansioni complete della tabella assicurandoti che la condizione della clausola WHERE (DOVE) sia configurata di conseguenza. -
Disabilitare le scansioni di tabelle complete utilizzando la policy IAM specificata in Esempio: Consentire le istruzioni Select e rifiutare le istruzioni di scansione completa della tabella in PartiQL per DynamoDB, nella Guida per gli sviluppatori di DynamoDB.
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
[, ...] FROMtable
[.index
] [ WHEREcondition
] [ [ORDER BYkey
[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 clausolaWHERE
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 partizioneOrderID
e altri attributi non chiave, tra cuiAddress
, 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
); specificaDESC
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'