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 non viene fornita una condizione di uguaglianza o IN con una chiave di partizione. WHERE 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:
-
Scrivi
SELECT
le tue dichiarazioni per evitare scansioni complete della tabella assicurandoti che la condizione della WHERE clausola sia configurata di conseguenza. -
Disabilita le scansioni complete delle tabelle utilizzando la IAM policy specificata inEsempio: Consentire le istruzioni Select e rifiutare le istruzioni di scansione completa della tabella in PartiQL per DynamoDB, nella guida per 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
expression
-
(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 . table
-
(Obbligatorio) Il nome della tabella per cui eseguire la query.
index
-
(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"
condition
-
(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 OrderID = 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 della Orders
tabella all'interno di un intervallo di Total
ordini specifico, utilizzando l'BETWEENoperatore 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 un dispositivo Firestick è stato utilizzato specificando la chiave di partizione e la chiave di ordinamento nella condizione della clausola CustomerID
e utilizzando i WHERE percorsi dei documenti MovieID
nella clausola. SELECT
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 24/12/19 utilizzando i percorsi dei documenti nella condizione della clausola. WHERE
SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] >= '12/24/19'