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.
Indicateurs Aurora MySQL
Vous pouvez utiliser des indicateurs SQL avec des requêtes Aurora MySQL pour ajuster les performances. Vous pouvez également utiliser des indicateurs pour empêcher que les plans d’exécution des requêtes importantes ne changent en fonction de conditions imprévisibles.
Astuce
Pour vérifier l’effet d’un indicateur sur une requête, examinez le plan de requête produit par l’instruction EXPLAIN. Comparez les plans de requête avec et sans l’indicateur.
Dans Aurora MySQL version 3, vous pouvez utiliser tous les indicateurs disponibles dans MySQL Community Edition 8.0. Pour plus d’informations sur ces indicateurs, consultez Optimizer Hints
Les indicateurs suivants sont disponibles dans Aurora MySQL version 2. Ces indicateurs s’appliquent aux requêtes qui utilisent la fonction de jointure par hachage dans Aurora MySQL version 2, notamment les requêtes utilisant l’optimisation via les requêtes parallèles.
- PQ, NO_PQ
-
Spécifie s’il faut forcer l’optimiseur à utiliser une requête parallèle par table ou par requête.
PQforce l’optimiseur à utiliser une requête parallèle pour les tables spécifiées ou pour l’ensemble de la requête (bloc).NO_PQempêche l’optimiseur d’utiliser une requête parallèle pour des tables spécifiées ou pour l’ensemble de la requête (bloc).Cet indicateur est disponible dans Aurora MySQL versions 2.11 et ultérieures. Les exemples suivants vous montrent comment utiliser cet indicateur.
Note
La spécification d’un nom de table force l’optimiseur à appliquer l’indicateur
PQ/NO_PQuniquement aux tables sélectionnées. Le fait de ne pas spécifier de nom de table force l’indicateurPQ/NO_PQsur toutes les tables concernées par le bloc de requête.EXPLAIN SELECT /*+ PQ() */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ PQ(t1) */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ PQ(t1,t2) */ f1, f2 FROM num1 t1, num1 t2 WHERE t1.f1 = t2.f21; EXPLAIN SELECT /*+ NO_PQ() */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ NO_PQ(t1) */ f1, f2 FROM num1 t1 WHERE f1 > 10 and f2 < 100; EXPLAIN SELECT /*+ NO_PQ(t1,t2) */ f1, f2 FROM num1 t1, num1 t2 WHERE t1.f1 = t2.f21; - HASH_JOIN, NO_HASH_JOIN
-
Active ou désactive la capacité de l’optimiseur de requête parallèle à choisir d’utiliser la méthode d’optimisation de jointure de hachage pour une requête.
HASH_JOINlaisse l’optimiseur utiliser la jointure de hachage si ce mécanisme est plus efficace.NO_HASH_JOINempêche l’optimiseur d’utiliser la jointure de hachage pour la requête. Cet indicateur est disponible dans Aurora MySQL versions 2.08 et ultérieures. Il est sans effet dans Aurora MySQL version 3.Les exemples suivants vous montrent comment utiliser cet indicateur.
EXPLAIN SELECT/*+ HASH_JOIN(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; EXPLAIN SELECT /*+ NO_HASH_JOIN(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; - HASH_JOIN_PROBING, NO_HASH_JOIN_PROBING
-
Dans une requête de jointure de hachage, il indique s’il faut utiliser la table spécifiée pour le côté sonde de la jointure. La requête vérifie si les valeurs de colonne de la table de build existent dans la table de sonde, au lieu de lire l’intégralité du contenu de cette dernière. Vous pouvez utiliser
HASH_JOIN_PROBINGetHASH_JOIN_BUILDINGpour spécifier comment les requêtes de jointure de hachage sont traitées sans réordonner les tables dans le texte de la requête. Cet indicateur est disponible dans Aurora MySQL versions 2.08 et ultérieures. Il est sans effet dans Aurora MySQL version 3.Les exemples suivants montrent comment utiliser cet indicateur. La spécification de l’indicateur
HASH_JOIN_PROBINGpour la tableT2a le même effet que la spécificationNO_HASH_JOIN_PROBINGpour la tableT1.EXPLAIN SELECT /*+ HASH_JOIN(t2) HASH_JOIN_PROBING(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; EXPLAIN SELECT /*+ HASH_JOIN(t2) NO_HASH_JOIN_PROBING(t1) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; - HASH_JOIN_BUILDING, NO_HASH_JOIN_BUILDING
-
Dans une requête de jointure de hachage, spécifie s’il faut utiliser la table spécifiée pour le côté build de la jointure. La requête traite toutes les lignes de cette table pour créer la liste des valeurs de colonne à recouper avec l’autre table. Vous pouvez utiliser
HASH_JOIN_PROBINGetHASH_JOIN_BUILDINGpour spécifier comment les requêtes de jointure de hachage sont traitées sans réordonner les tables dans le texte de la requête. Cet indicateur est disponible dans Aurora MySQL versions 2.08 et ultérieures. Il est sans effet dans Aurora MySQL version 3.L’exemple suivant vous montre comment utiliser cet indicateur. La spécification de l’indicateur
HASH_JOIN_BUILDINGpour la tableT2a le même effet que la spécificationNO_HASH_JOIN_BUILDINGpour la tableT1.EXPLAIN SELECT /*+ HASH_JOIN(t2) HASH_JOIN_BUILDING(t2) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; EXPLAIN SELECT /*+ HASH_JOIN(t2) NO_HASH_JOIN_BUILDING(t1) */ f1, f2 FROM t1, t2 WHERE t1.f1 = t2.f1; - JOIN_FIXED_ORDER
-
Spécifie que les tables de la requête sont jointes en fonction de l’ordre dans lequel elles sont répertoriées dans la requête. Il est utile pour les requêtes impliquant trois tables ou plus. Il est destiné à remplacer l’indicateur MySQL
STRAIGHT_JOINet il est équivalent à l’indicateur MySQL JOIN_FIXED_ORDER. Cet indicateur est disponible dans Aurora MySQL versions 2.08 et ultérieures. L’exemple suivant vous montre comment utiliser cet indicateur.
EXPLAIN SELECT /*+ JOIN_FIXED_ORDER() */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id); - JOIN_ORDER
-
Spécifie l’ordre de jointure des tables de la requête. Il est utile pour les requêtes impliquant trois tables ou plus. Il est équivalent à l’indicateur MySQL JOIN_ORDER
. Cet indicateur est disponible dans Aurora MySQL versions 2.08 et ultérieures. L’exemple suivant vous montre comment utiliser cet indicateur.
EXPLAIN SELECT /*+ JOIN_ORDER (t4, t2, t1, t3) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id); - JOIN_PREFIX
-
Spécifie les tables à placer en premier dans l’ordre de jointure. Il est utile pour les requêtes impliquant trois tables ou plus. Il est équivalent à l’indicateur MySQL JOIN_PREFIX
. Cet indicateur est disponible dans Aurora MySQL versions 2.08 et ultérieures. L’exemple suivant vous montre comment utiliser cet indicateur.
EXPLAIN SELECT /*+ JOIN_PREFIX (t4, t2) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id); - JOIN_SUFFIX
-
Spécifie les tables à mettre en dernier dans l’ordre de jointure. Il est utile pour les requêtes impliquant trois tables ou plus. Il est équivalent à l’indicateur MySQL JOIN_SUFFIX
. Cet indicateur est disponible dans Aurora MySQL versions 2.08 et ultérieures. L’exemple suivant vous montre comment utiliser cet indicateur.
EXPLAIN SELECT /*+ JOIN_SUFFIX (t1) */ f1, f2 FROM t1 JOIN t2 USING (id) JOIN t3 USING (id) JOIN t4 USING (id);
Pour plus d’informations sur l’utilisation des requêtes de jointure de hachage, consultez Optimisation des requêtes de jointure MySQL Aurora volumineuses avec des jointures de hachage.