Use o IN operador com a SELECT declaração em uma consulta no Amazon Keyspaces - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use o IN operador com a SELECT declaração em uma consulta no Amazon Keyspaces

SELECTEM

Você pode consultar dados de tabelas usando a instrução SELECT, que lê uma ou mais colunas para uma ou mais linhas em uma tabela e retorna um conjunto de resultados contendo as linhas correspondentes à solicitação. Uma instrução SELECT contém uma select_clause que determina quais colunas devem ser lidas e retornadas no conjunto de resultados. A cláusula pode conter instruções para transformar os dados antes de retorná-los. A cláusula opcional WHERE especifica quais linhas devem ser consultadas e é composta por relações nas colunas que fazem parte da chave primária. O Amazon Keyspaces oferece suporte à palavra-chave IN na cláusula WHERE. Esta seção usa exemplos para mostrar como o Amazon Keyspaces processa instruções SELECT com a palavra-chave IN.

Esses exemplos demonstram como o Amazon Keyspaces divide a instrução SELECT com a palavra-chave IN em subconsultas. Neste exemplo, usamos uma tabela com o nome my_keyspace.customers. A tabela tem uma coluna de chave primária department_id, duas colunas de clustering sales_region_id e sales_representative_id e uma coluna que contém o nome do cliente na coluna 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

Usando essa tabela, você pode executar a instrução SELECT a seguir para encontrar os clientes nos departamentos e regiões de vendas nos quais você está interessado com a palavra-chave IN na cláusula WHERE. A instrução a seguir é um exemplo disso.

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

O Amazon Keyspaces divide essa instrução em quatro subconsultas, conforme mostrado na saída a seguir.

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

Quando a palavra-chave IN é usada, o Amazon Keyspaces pagina automaticamente os resultados em qualquer um dos seguintes casos:

  • Depois que cada 10ª subconsulta for processada.

  • Depois de processar 1MB de E/S lógica.

  • Se você configurou um PAGE SIZE, o Amazon Keyspaces pagina depois de ler o número de consultas para processamento com base no conjunto PAGE SIZE.

  • Quando você usa a palavra-chave LIMIT para reduzir o número de linhas retornadas, o Amazon Keyspaces pagina depois de ler o número de consultas para processamento com base no conjunto LIMIT.

A tabela a seguir é usada para ilustrar isso com um exemplo.

Para obter mais informações sobre paginação, consulte Pagine os resultados no 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

Você pode executar a instrução a seguir nessa tabela para ver como a paginação funciona.

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);

O Amazon Keyspaces processa essa declaração como 24 subconsultas, porque a cardinalidade do produto cartesiano de todos os termos IN contidos nessa consulta é 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

Este exemplo mostra como você pode usar a cláusula ORDER BY em uma instrução SELECT com a palavra-chave 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

As subconsultas são processadas na ordem em que as colunas da chave de partição e da chave clustering são apresentadas na consulta. No exemplo abaixo, as subconsultas para o valor da chave de partição “2” são processadas primeiro, seguidas pelas subconsultas para o valor da chave de partição “3” e “1”. Os resultados de uma determinada subconsulta são ordenados de acordo com a cláusula de ordenação da consulta, se presente, ou com a ordem de clustering da tabela definida durante sua criação.

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