Instrucciones de selección de PartiQL para DynamoDB
Se utiliza la instrucción SELECT
para recuperar datos de una tabla de Amazon DynamoDB.
Si se usa la instrucción SELECT
se puede generar un análisis completo de la tabla si no se proporciona una condición de igualdad o IN con una clave de partición en la cláusula WHERE. La operación de análisis examina cada elemento para comprobar si presenta los valores solicitados y permite utilizar el rendimiento aprovisionado para una tabla o un índice grandes en una sola operación.
Si desea evitar el análisis completo de la tabla en PartiQL, puede:
-
Cree su instrucción
SELECT
para que no resulten en análisis completos de la tabla asegurándose de que su condición de la cláusula WHERE se configura en consecuencia. -
Desactive los análisis completos de tablas mediante la política de IAM especificada en Ejemplo: permitir instrucciones Select y denegar instrucciones de análisis de tabla completa en PartiQL para DynamoDB, en la guía para desarrolladores de DynamoDB.
Para obtener más información, consulte Prácticas recomendadas para consultar y examinar datos, en la guía para desarrolladores de DynamoDB.
Sintaxis
SELECT
expression
[, ...] FROMtable
[.index
] [ WHEREcondition
] [ [ORDER BYkey
[DESC|ASC] , ...]
Parámetros
expression
-
(Requerido) Una proyección formada a partir del comodín
*
o una lista de proyección de uno o más nombres de atributos o rutas de documentos del conjunto de resultados. Una expresión puede consistir en llamadas a Uso de funciones de PartiQL con DynamoDB o campos modificados por Operadores aritméticos, comparativos y lógicos de PartiQL para DynamoDB . tabla
-
(Necesario) Nombre de la tabla que se va a consultar.
índice
-
(Opcional) El nombre del índice que se consultará.
nota
Debe agregar comillas dobles al nombre de la tabla y al nombre del índice al consultar uno.
SELECT * FROM "TableName"."IndexName"
condition
-
(Opcional) Criterios de selección para la consulta.
importante
Para asegurarse de que una instrucción
SELECT
no da como resultado un análisis completo de la tabla, la condición de cláusulaWHERE
debe especificar una clave de partición. Utilice el operador de igualdad o IN.Por ejemplo, si tiene una tabla
Orders
con una clave de particiónOrderID
y otros atributos que no son clave, incluido unaAddress
, las siguientes instrucciones no resultarían en un análisis completo de la tabla: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]
Las siguientes instrucciones de
SELECT
, sin embargo, resultarán en un análisis completo de la tabla:SELECT * FROM "Orders" WHERE OrderID > 1 SELECT * FROM "Orders" WHERE Address='some address' SELECT * FROM "Orders" WHERE OrderID = 100 OR Address='some address'
clave
-
(Opcional) Una clave hash o una clave de ordenación que se va a utilizar para ordenar los resultados devueltos. El orden predeterminado es ascendente (
ASC
) especifiqueDESC
si desea que los resultados se vuelvan a ejecutar en orden descendente.
nota
Si omite la cláusula WHERE
, se recuperarán todos los elementos de la tabla.
Ejemplos
La siguiente consulta devuelve un elemento, si existe, de la tabla Orders
especificando la clave de partición, OrderID
y utilizando el operador de igualdad.
SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1
La siguiente consulta devuelve todos los elementos de la tabla Orders
que tiene una clave de partición determinada, OrderID
, valores utilizando el operador OR.
SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1 OR OrderID = 2
La siguiente consulta devuelve todos los elementos de la tabla Orders
que tiene una clave de partición determinada, OrderID
, valores utilizando el operador IN. Los resultados devueltos están en orden descendente, basados en el valor del atributo clave OrderID
.
SELECT OrderID, Total FROM "Orders" WHERE OrderID IN [1, 2, 3] ORDER BY OrderID DESC
La siguiente consulta muestra un análisis de tabla completo que devuelve todos los elementos de la tabla Orders
que tienen un Total
mayor que 500, donde Total
es un atributo que no es clave.
SELECT OrderID, Total FROM "Orders" WHERE Total > 500
La siguiente consulta muestra un análisis de tabla completo que devuelve todos los elementos de la tabla Orders
con un rango de orden Total
, utilizando el operador IN y un atributo que no es clave Total
.
SELECT OrderID, Total FROM "Orders" WHERE Total IN [500, 600]
La siguiente consulta muestra un análisis de tabla completo que devuelve todos los elementos de la tabla Orders
dentro de un rango de orden Total
específico, utilizando el operador BETWEEN y un atributo que no es clave Total
.
SELECT OrderID, Total FROM "Orders" WHERE Total BETWEEN 500 AND 600
La siguiente consulta devuelve la primera fecha en que se utilizó un dispositivo firestick para ver especificando la clave de partición CustomerID
y la clave de ordenación MovieID
en la condición de cláusula WHERE y utilizando rutas de documento en la cláusula SELECT.
SELECT Devices.FireStick.DateWatched[0] FROM WatchList WHERE CustomerID= 'C1' AND MovieID= 'M1'
La siguiente consulta muestra un análisis de tabla completo que devuelve la lista de elementos en los que un dispositivo de firestick se utilizó por primera vez después del 24/12/19 mediante rutas de documento en la condición de cláusula WHERE.
SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] >= '12/24/19'