Instrucciones de selección de PartiQL para DynamoDB - Amazon DynamoDB

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:

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 [, ...] FROM table[.index] [ WHERE condition ] [ [ORDER BY key [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 PartiQL con Amazon 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áusula WHERE 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ón OrderIDy otros atributos que no son clave, incluido una Address, 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) especifique DESC 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'