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()
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.