Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Instructions PartiQL de sélection pour DynamoDB
Utilisez l'instruction SELECT
pour extraire des données d'une table dans Amazon DynamoDB.
L'utilisation de l'SELECT
instruction peut entraîner une analyse complète de la table si aucune condition d'égalité ou IN avec une clé de partition n'est fournie dans la clause WHERE. Une opération d'analyse examine chaque élément en lien avec les valeurs demandées, et peut utiliser tout le débit approvisionné pour une table ou un index volumineux en une seule opération.
Si vous voulez éviter une analyse de table complète dans PartiQL, vous pouvez :
-
Créer vos instructions
SELECT
de façon à ce qu'elle n'entraînent pas d'analyse de table complète en vous assurant que votre condition de clause WHERE est configurée en conséquence. -
Désactiver l'analyse de table complète à l'aide de la politique IAM spécifiée dans Exemple : autoriser les instructions de sélection et rejeter les instructions d'analyse de table complète dans PartiQL pour DynamoDB, dans le Manuel du développeur DynamoDB.
Pour plus d'informations, consultez Bonnes pratiques pour l'interrogation et l'analyse des données dans le Guide du développeur DynamoDB.
Rubriques
Syntaxe
SELECT
expression
[, ...] FROMtable
[.index
] [ WHEREcondition
] [ [ORDER BYkey
[DESC|ASC] , ...]
Paramètres
expression
-
(Obligatoire) Projection formée à partir du caractère générique
*
ou d'une liste de projection d'un ou de plusieurs noms d'attributs ou chemins d'accès de documents de l'ensemble de résultats. Une expression peut être constituée d'appels à Utiliser les fonctions PartiQL avec DynamoDB ou de champs modifiés par Opérateurs arithmétiques, de comparaison et logiques PartiQL pour DynamoDB . table
-
(Obligatoire) Nom de la table à interroger.
index
-
(Facultatif) Nom de l'index à interroger.
Note
Vous devez ajouter des guillemets doubles au nom de la table et au nom de l'index lorsque vous interrogez un index.
SELECT * FROM "TableName"."IndexName"
condition
-
(Facultatif) Critères de sélection pour la requête.
Important
Pour s'assurer qu'une instruction
SELECT
n'entraîne pas une analyse de table complète, la condition de clauseWHERE
doit spécifier une clé de partition. Utilisez l'opérateur d'égalité ou IN (DANS).Par exemple, si vous avez une table
Orders
avec une clé de partitionOrderID
et des attributs autres que de clé, dont uneAddress
, les instructions suivantes n'entraînent pas d'analyse de table complète :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]
En revanche, les instructions
SELECT
suivantes entraînent une analyse de table complète :SELECT * FROM "Orders" WHERE OrderID > 1 SELECT * FROM "Orders" WHERE Address='some address' SELECT * FROM "Orders" WHERE OrderID = 100 OR Address='some address'
key
-
(Facultatif) Clé de hachage ou clé de tri à utiliser pour ordonner les résultats renvoyés. L'ordre par défaut est croissant (
ASC
). SpécifiezDESC
si vous voulez que les résultats soient réordonnés dans l'ordre décroissant.
Note
Si vous omettez la clause WHERE
, tous les éléments de la table sont extraits.
Exemples
La requête suivante renvoie un élément existant de la table Orders
en spécifiant la clé de partition, OrderID
, et en utilisant l'opérateur d'égalité.
SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1
La requête suivante renvoie tous les éléments de la table Orders
ayant une clé de partition spécifique, OrderID
, et leurs valeurs en utilisant l'opérateur OR (OU).
SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1 OR OrderID = 2
La requête suivante renvoie tous les éléments de la table Orders
ayant une clé de partition spécifique, OrderID
, et leurs valeurs en utilisant l'opérateur IN (DANS). Les résultats renvoyés sont dans l'ordre décroissant de la valeur de leur attribut de clé OrderID
.
SELECT OrderID, Total FROM "Orders" WHERE OrderID IN [1, 2, 3] ORDER BY OrderID DESC
La requête suivante affiche une analyse de table complète qui renvoie tous les éléments de la table Orders
dont la valeur Total
est supérieure à 500, où Total
est un attribut autre que de clé.
SELECT OrderID, Total FROM "Orders" WHERE Total > 500
La requête suivante affiche une analyse de table complète qui renvoie tous les éléments de la table Orders
dans une plage Total
spécifique, en utilisant l'opérateur IN (DANS) et un attribut autre que de clé Total
.
SELECT OrderID, Total FROM "Orders" WHERE Total IN [500, 600]
La requête suivante affiche une analyse de table complète qui renvoie tous les éléments de la table Orders
dans une plage Total
spécifique, en utilisant l'opérateur BETWEEN (ENTRE) et un attribut autre que de clé Total
.
SELECT OrderID, Total FROM "Orders" WHERE Total BETWEEN 500 AND 600
La requête suivante renvoie la première date à laquelle un Firestick a été utilisé, en spécifiant la clé de partition CustomerID
et une clé de tri MovieID
dans la condition de clause WHERE, et en utilisant des chemins d'accès de document dans la clause SELECT.
SELECT Devices.FireStick.DateWatched[0] FROM WatchList WHERE CustomerID= 'C1' AND MovieID= 'M1'
La requête suivante affiche une analyse de table complète qui renvoie la liste des éléments pour lesquels un Firestick a été utilisé pour la première fois après le 24/12/19, en utilisant des chemins de document dans la condition de la clause WHERE.
SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] >= '12/24/19'