Usa el IN operador con la SELECT sentencia en una consulta en Amazon Keyspaces - Amazon Keyspaces (para Apache Cassandra)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Usa el IN operador con la SELECT sentencia en una consulta en Amazon Keyspaces

SELECTEN

Puede consultar datos de tablas mediante la instrucción SELECT, que lee una o varias columnas de una o varias filas de una tabla y devuelve un conjunto de resultados que contiene las filas que coinciden con la solicitud. Una instrucción SELECT contiene una cláusula select_clause que determina qué columnas leer y devolver en el conjunto de resultados. La cláusula puede contener instrucciones para transformar los datos antes de devolverlos. La cláusula WHERE opcional especifica qué filas deben consultarse y se compone de relaciones sobre las columnas que forman parte de la clave principal. Amazon Keyspaces admite la palabra clave IN en la cláusula WHERE. En esta sección se utilizan ejemplos para mostrar cómo procesa Amazon Keyspaces las instrucciones SELECT con la palabra clave IN.

Estos ejemplos demuestran cómo Amazon Keyspaces descompone la instrucción SELECT con la palabra clave IN en subconsultas. En este ejemplo, utilizamos una tabla con el nombre my_keyspace.customers. La tabla tiene una columna de clave principal department_id, dos columnas de agrupación sales_region_id y sales_representative_id, y una columna que contiene el nombre del cliente en la columna customer_name.

SELECT * FROM my_keyspace.customers; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 0 | 1 | b 0 | 1 | 0 | c 0 | 1 | 1 | d 1 | 0 | 0 | e 1 | 0 | 1 | f 1 | 1 | 0 | g 1 | 1 | 1 | h

Con esta tabla, puede ejecutar la instrucción SELECT siguiente para encontrar los clientes en los departamentos y regiones de ventas que le interesen con la palabra clave IN en la cláusula WHERE. La siguiente instrucción es un ejemplo de ello.

SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1) AND sales_region_id IN (0, 1);

Amazon Keyspaces divide esta instrucción en cuatro subconsultas como se muestra en el siguiente resultado.

SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 0; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 0 | 1 | b SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 1; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 1 | 0 | c 0 | 1 | 1 | d SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 0; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 1 | 0 | 0 | e 1 | 0 | 1 | f SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 1; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 1 | 1 | 0 | g 1 | 1 | 1 | h

Al utilizar la palabra clave IN, Amazon Keyspaces pagina automáticamente los resultados en cualquiera de los siguientes casos:

  • Después de procesarse cada 10.ª subconsulta.

  • Después de procesar 1 MB de E/S lógica.

  • Si configuró un PAGE SIZE, Amazon Keyspaces pagina después de leer el número de consultas por procesar en función del ajuste PAGE SIZE.

  • Al utilizar la palabra clave LIMIT para reducir el número de filas devueltas, Amazon Keyspaces pagina después de leer el número de consultas por procesar en función del ajuste LIMIT.

La siguiente tabla sirve para ilustrar esto con un ejemplo.

Para obtener más información sobre paginación, consulte Paginar los resultados en Amazon Keyspaces.

SELECT * FROM my_keyspace.customers; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 0 | 0 | g 2 | 1 | 1 | h 2 | 2 | 2 | i 0 | 0 | 0 | a 0 | 1 | 1 | b 0 | 2 | 2 | c 1 | 0 | 0 | d 1 | 1 | 1 | e 1 | 2 | 2 | f 3 | 0 | 0 | j 3 | 1 | 1 | k 3 | 2 | 2 | l

Puede ejecutar la siguiente instrucción en esta tabla para ver cómo funciona la paginación.

SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1, 2, 3) AND sales_region_id IN (0, 1, 2) AND sales_representative_id IN (0, 1);

Amazon Keyspaces procesa esta instrucción como 24 subconsultas, porque la cardinalidad del producto cartesiano de todos los términos IN contenidos en esta consulta es 24.

department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 1 | 1 | b 1 | 0 | 0 | d 1 | 1 | 1 | e ---MORE--- department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 0 | 0 | g 2 | 1 | 1 | h 3 | 0 | 0 | j ---MORE--- department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 3 | 1 | 1 | k

En este ejemplo se muestra cómo puede utilizar la cláusula ORDER BY en una instrucción SELECT con la palabra clave IN.

SELECT * FROM my_keyspace.customers WHERE department_id IN (3, 2, 1) ORDER BY sales_region_id DESC; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 3 | 2 | 2 | l 3 | 1 | 1 | k 3 | 0 | 0 | j 2 | 2 | 2 | i 2 | 1 | 1 | h 2 | 0 | 0 | g 1 | 2 | 2 | f 1 | 1 | 1 | e 1 | 0 | 0 | d

Las subconsultas se procesan en el orden en que las columnas de clave de partición y clave de agrupación se presentan en la consulta. En el ejemplo siguiente, las subconsultas para el valor de clave de partición “2” se procesan primero, seguidas de las subconsultas para el valor de clave de partición “3” y “1”. Los resultados de una subconsulta dada se ordenan según la cláusula de ordenación de la consulta, si está presente, o el orden de agrupación de la tabla definido durante la creación de la tabla.

SELECT * FROM my_keyspace.customers WHERE department_id IN (2, 3, 1) ORDER BY sales_region_id DESC; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 2 | 2 | i 2 | 1 | 1 | h 2 | 0 | 0 | g 3 | 2 | 2 | l 3 | 1 | 1 | k 3 | 0 | 0 | j 1 | 2 | 2 | f 1 | 1 | 1 | e 1 | 0 | 0 | d