Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Optimisez vos requêtes
Utilisez les suggestions de cette section pour optimiser vos SQL requêtes dans Athena.
À utiliser LIMIT avec la clause ORDER BY
La clause ORDER BY
renvoie les données dans un ordre trié. Cela oblige Athena à envoyer toutes les lignes de données à un seul composant master, puis à trier les lignes. Ce type de requête peut s'exécuter pendant une longue période, voire échouer.
Pour une plus grande efficacité dans vos requêtes, regardez en haut ou en bas N
valeurs, puis utilisez également une LIMIT
clause. Cela réduit considérablement le coût du tri en poussant le tri et la limitation vers des composants master individuels plutôt qu'à un seul composant master.
Optimisez les JOIN clauses
Lorsque vous joignez deux tables, Athena répartit la table de droite sur les composants master, puis diffuse la table de gauche pour effectuer la jointure.
Pour cette raison, spécifiez la table la plus grande du côté gauche de la jointure et la plus petite du côté droit de la jointure. De cette manière, Athena utilise moins de mémoire et exécute la requête avec une latence plus faible.
Notez également les points suivants :
-
Lorsque vous utilisez plusieurs commandes
JOIN
, spécifiez les tables de la plus grande à la plus petite. -
Évitez les jointures croisées, sauf si elles sont requises par la requête.
Optimisez GROUP les clauses BY
L'opérateur GROUP BY
répartit les lignes en fonction des colonnes GROUP
BY
sur les composants master. Ces colonnes sont référencées en mémoire et les valeurs sont comparées au fur et à mesure que les lignes sont ingérées. Les valeurs sont agrégées lorsque la colonne GROUP BY
correspond. Compte tenu du fonctionnement de ce processus, il est conseillé d'ordonner les colonnes de la cardinalité la plus élevée à la plus faible.
Utiliser des nombres au lieu des chaînes
Comme les nombres nécessitent moins de mémoire et sont plus rapides à traiter que les chaînes, utilisez des nombres plutôt que des chaînes lorsque cela est possible.
Limiter le nombre de colonnes
Pour réduire la quantité totale de mémoire requise pour stocker vos données, limitez le nombre de colonnes spécifié dans votre instruction SELECT
.
Utilisez des expressions régulières au lieu de LIKE
Les requêtes qui incluent des clauses, par exemple LIKE '%string%'
sur de grandes chaînes, peuvent être très gourmandes en calculs. Lorsque vous filtrez plusieurs valeurs sur une colonne de chaîne, utilisez plutôt la fonction regexp_like()
Utilisez la LIMIT clause
Au lieu de sélectionner toutes les colonnes lorsque vous exécutez une requête, utilisez la clause LIMIT
pour renvoyer uniquement celles dont vous avez besoin. Cela réduit la taille du jeu de données traité via le pipeline d'exécution des requêtes. Les clauses LIMIT
sont plus utiles lorsque vous interrogez des tables comportant un grand nombre de colonnes basées sur des chaînes. Les clauses LIMIT
sont également utiles lorsque vous effectuez plusieurs jointures ou agrégations sur une requête.