vendredi 6 novembre 2015

Les hints de jointure et du parallélisme


Les hints de jointure :
  • LEADING : Permet de spécifier la table menante dans une jointure                                             select /*+leading (cmd cli) */ cli.noclient,nom, cmd.datecommande                              from clients cli,cmd                                                                        where cli.noclient=cmd.noclient                                                              and cli.noclient between 100000 and 100020 ;
  • ORDERED:  Permet de spécifier que les jointures doivent être faites dans l’ordre d’apparition dans la clause FROM.
  • USE_NL,NO_USE_NL: Force ou interdit une jointure par boucles imbriquées (Nested Loop).
  • USE_NL_WITH_INDEX: Force une jointure par boucles imbriquées seulement si unindex est présent sur la table jointe. Ce hint sera sans effet si l’index disparaît ou est invalidé. En effet, l’impossibilité d’utiliser un index pourrait avoir des conséquences désastreuses en termes de performances : une boucle imbriquée sur une grosse table non indexée a des performances catastrophiques car elle provoque un parcours complet de la table pour chaque valeur de la table menante.
  • USE_MERGE, NO_USE_MERGE. Force ou interdit une jointure par Sorted Merge.
  • USE_HASH, NO_USE_HASH. Force ou interdit une jointure par table de hachage.

Les hints de parallélisme :

  • PARALLEL(table_alias , degré //): Permet de spécifier un niveau de parallélisme pour les accès à une table.
  • NO_PARALLEL (table_alias):  Permet de désactiver le parallélisme pour les accès à une table.
  • PARALLEL_index (table_alias , idx,degré):  Permet de spécifier un niveau de parallélisme sur les Index Scan.
  • NO_PARALLEL_index (table_alias):  Permet de désactiver le parallélisme sur les Index Scan.

Aucun commentaire:

Enregistrer un commentaire