Optimización de las consultas - Amazon Athena

Optimización de las consultas

Utilice las sugerencias de esta sección para optimizar sus consultas SQL en Athena.

Utilice LIMIT con la cláusula ORDER BY

La cláusula ORDER BY devuelve los datos en un orden clasificado Esto requiere que Athena envíe todas las filas de datos a un único nodo de trabajo y luego las ordene. Este tipo de consulta puede ejecutarse durante mucho tiempo o, incluso, fallar.

Para aumentar la eficacia de las consultas, observe los valores N en la parte superior o inferior y utilice también una cláusula LIMIT. Esto reduce de forma significativa el costo de la clasificación, ya que tanto la clasificación como la limitación recaen en nodos de trabajo individuales en lugar de en un solo trabajo.

Optimice las cláusulas JOIN

Al unir dos tablas, Athena distribuye la tabla de la derecha entre los nodos de trabajo y luego incluye la tabla de la izquierda para realizar la unión.

Por este motivo, especifique la tabla más grande en el lado izquierdo de la unión y la tabla más pequeña en el lado derecho de la unión. De esta forma, Athena utiliza menos memoria y ejecuta la consulta con una latencia menor.

También tenga en cuenta los siguientes puntos:

  • Cuando utilice varios comandos JOIN, especifique las tablas de mayor a menor.

  • Evite las uniones cruzadas a menos que la consulta las requiera.

Optimice las cláusulas GROUP BY

El operador GROUP BY distribuye las filas en función de las columnas GROUP BY a los nodos de trabajo. Se hace referencia a estas columnas en la memoria y los valores se comparan a medida que se ingieren las filas. Los valores se agregan cuando la columna GROUP BY coincide. Teniendo en cuenta la forma en que funciona este proceso, se recomienda ordenar las columnas desde la cardinalidad más alta hasta la más baja.

Utilice números en lugar de cadenas

Como los números requieren menos memoria y son más rápidos de procesar en comparación con las cadenas, utilice números en lugar de cadenas siempre que sea posible.

Limite el número de columnas

A fin de reducir la cantidad total de memoria necesaria para almacenar los datos, limite el número de columnas especificado en la instrucción SELECT.

Utilice expresiones comunes en lugar de LIKE

Las consultas que incluyen cláusulas como LIKE '%string%' en cadenas grandes pueden ser muy exigentes desde el punto de vista computacional. Al filtrar varios valores en una columna de cadena, utilice la función regexp_like() y una expresión común en su lugar. Esto resulta muy útil cuando se compara una lista larga de valores.

Utilice la cláusula LIMIT

En lugar de seleccionar todas las columnas al ejecutar una consulta, utilice la cláusula LIMIT para devolver solo las columnas que necesite. Esto reduce el tamaño del conjunto de datos que se procesa a través de la canalización de ejecución de la consulta. Las cláusulas LIMIT son más útiles cuando se consultan tablas que tienen un gran número de columnas basadas en cadenas. Las cláusulas LIMIT también son útiles cuando se realizan múltiples uniones o agregaciones en cualquier consulta.