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.
Aurora Mes SQL conseils
Vous pouvez utiliser SQL des indices avec les SQL requêtes Aurora My pour affiner 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 My SQL version 3, vous pouvez utiliser tous les conseils disponibles dans My SQL Community Edition 8.0. Pour plus d'informations sur ces conseils, consultez la section Conseils de l'optimiseur
Les conseils suivants sont disponibles dans la SQL version 2 d'Aurora My. Ces conseils s'appliquent aux requêtes qui utilisent la fonctionnalité de jointure par hachage d'Aurora My SQL version 2, en particulier aux requêtes qui utilisent l'optimisation des requêtes en parallèle.
- PQ, NO_PQ
-
Spécifie s'il faut forcer l'optimiseur à utiliser une requête parallèle par table ou par requête.
PQ
force l'optimiseur à utiliser une requête parallèle pour les tables spécifiées ou pour l'ensemble de la requête (bloc).NO_PQ
empê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).Ce conseil est disponible dans Aurora My SQL version 2.11 et versions 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_PQ
uniquement aux tables sélectionnées. Le fait de ne pas spécifier de nom de table force l'indicateurPQ/NO_PQ
sur 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, NON_ _ 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_JOIN
laisse l'optimiseur utiliser la jointure de hachage si ce mécanisme est plus efficace.NO_HASH_JOIN
empêche l'optimiseur d'utiliser la jointure de hachage pour la requête. Ce conseil est disponible dans Aurora My SQL version 2.08 et supérieure. Cela n'a aucun effet dans la SQL version 3 d'Aurora My.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, NON_ _ 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_PROBING
etHASH_JOIN_BUILDING
pour 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. Ce conseil est disponible dans Aurora My SQL version 2.08 et supérieure. Cela n'a aucun effet dans la SQL version 3 d'Aurora My.Les exemples suivants montrent comment utiliser cet indicateur. La spécification de l'indicateur
HASH_JOIN_PROBING
pour la tableT2
a le même effet que la spécificationNO_HASH_JOIN_PROBING
pour 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, NON_ _ 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_PROBING
etHASH_JOIN_BUILDING
pour 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. Ce conseil est disponible dans Aurora My SQL version 2.08 et supérieure. Cela n'a aucun effet dans la SQL version 3 d'Aurora My.L'exemple suivant vous montre comment utiliser cet indicateur. La spécification de l'indicateur
HASH_JOIN_BUILDING
pour la tableT2
a le même effet que la spécificationNO_HASH_JOIN_BUILDING
pour 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 le SQL
STRAIGHT_JOIN
conseil My et est équivalent au conseil My SQL JOINFIXED_ ORDER _. Ce conseil est disponible dans Aurora My SQL version 2.08 et supérieure. 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. C'est équivalent à l'ORDERindice My SQL JOIN_
. Ce conseil est disponible dans Aurora My SQL version 2.08 et supérieure. 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. C'est équivalent à l'PREFIXindice My SQL JOIN_
. Ce conseil est disponible dans Aurora My SQL version 2.08 et supérieure. 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. C'est équivalent à l'SUFFIXindice My SQL JOIN_
. Ce conseil est disponible dans Aurora My SQL version 2.08 et supérieure. 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 de plus amples informations sur l'utilisation des requêtes de jointure de hachage, veuillez consulter Optimisation des requêtes Aurora My SQL join de grande taille avec des jointures par hachage.