Otimizar suas consultas - Amazon Athena

Otimizar suas consultas

Use as sugestões desta seção para otimizar as consultas SQL no Athena.

Usar LIMIT com a cláusula ORDER BY

A cláusula ORDER BY retorna dados em uma ordem classificada. Isso exige que o Athena envie todas as linhas de dados para um único nó de processamento e classifique as linhas. Esse tipo de consulta pode ser executado por muito tempo ou pode até falhar.

Para aumentar a eficiência das consultas, observe os valores N superiores ou inferiores e use também uma cláusula LIMIT. Isso reduz significativamente o custo de classificação, inserindo tanto a classificação como a limitação em nós de processamento individuais, e não em um único operador.

Otimizar cláusulas JOIN

Quando você une duas tabelas, o Athena distribui a tabela à direita para os nós de processamento e transmite a tabela à esquerda para realizar a junção.

Por isso, especifique a tabela maior no lado esquerdo da junção e a tabela menor no lado direito da junção. Assim, o Athena usa menos memória e executa a consulta com menor latência.

Observe também os seguintes pontos:

  • Ao usar vários comandos JOIN, especifique as tabelas da maior para a menor.

  • Evite junções cruzadas, a menos que sejam exigidas pela consulta.

Otimizar cláusulas GROUP BY

O operador GROUP BY distribui as linhas com base nas colunas GROUP BY para os nós de processamento. Essas colunas são referenciadas na memória, e os valores são comparados à medida que as linhas são ingeridas. Os valores são agregados quando a coluna GROUP BY coincide. Considerando a forma como o processo funciona, é aconselhável ordenar as colunas da maior cardinalidade para a menor.

Usar números em vez de strings

Como os números exigem menos memória e são mais rápidos de processar em comparação com as strings, use números em vez de strings quando possível.

Limitar o número de colunas

Para reduzir a quantidade total de memória necessária para armazenar os dados, limite o número de colunas especificado na instrução SELECT.

Usar expressões regulares em vez de LIKE

Consultas que incluem cláusulas como LIKE '%string%' em strings grandes podem fazer uso muito intensivo de computação. Ao filtrar por vários valores em uma coluna de string, use a função regexp_like() e uma expressão regular. Isso é útil especialmente ao comparar uma longa lista de valores.

Usar a cláusula LIMIT

Em vez de selecionar todas as colunas ao executar uma consulta, use a cláusula LIMIT para retornar somente as colunas necessárias. Essa ação reduz o tamanho do conjunto de dados que é processado pelo pipeline de execução da consulta. As cláusulas LIMIT são mais úteis ao consultar tabelas que têm um grande número de colunas baseadas em strings. As cláusulas LIMIT também são úteis ao executar várias junções ou agregações em qualquer consulta.