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