Validation du plan d'accès

Un plan d'accès est une structure de contrôle qui décrit les actions nécessaires pour répondre à chaque demande de requête. Il contient des informations sur les données et sur la façon de les extraire. Pour toute requête, chaque fois que l'optimisation se produit, l'optimiseur de requête développe un plan optimisé d'accès aux données demandées.

Pour améliorer les performances, un plan d'accès est sauvegardé une fois qu'il est généré (voir les exceptions suivantes), afin d'être disponible pour des exécutions futures potentielles de la requête. Toutefois, l'optimiseur dispose d'une fonction de replanification dynamique. Cela signifie que même si un plan précédemment généré (et sauvegardé) est trouvé, l'optimiseur peut le régénérer si un plan plus optimal est possible. Ce processus permet une flexibilité maximale tout en tirant parti des plans sauvegardés.

  • Pour SQL dynamique, un plan d'accès est créé lors de la préparation ou de l'ouverture. Toutefois, l'optimisation utilise les valeurs de variable hôte pour déterminer un plan optimal. Par conséquent, un plan généré lors de la préparation peut être régénéré lors de la première ouverture de la requête (lorsque les valeurs de variable hôte sont présentes).
  • Pour un programme IBM® i qui contient du SQL imbriqué statique, un plan d'accès est initialement créé lors de la compilation. De nouveau, comme l'optimisation utilise les valeurs de variable hôte pour déterminer un plan optimal, le plan de compilation peut être régénéré lors de la première ouverture de la requête.
  • Pour OPNQRYF (Ouvrir un fichier de requête), un plan d'accès est créé mais n'est pas sauvegardé. Un nouveau plan d'accès est créé chaque fois que la commande OPNQRYF est traitée.
  • Pour Query/400, un plan d'accès est sauvegardé dans le cadre de l'objet de définition de la requête.

Dans tous les cas précédents où un plan est sauvegardé, y compris le SQL statique, la replanification dynamique peut toujours s'appliquer au fur et à mesure de l'exécution des requêtes.

Le plan d'accès est validé lorsque la requête est ouverte. La validation inclut les éléments suivants:

  • Vérification que les mêmes tables sont référencées dans la requête que dans le plan d'accès. Par exemple, les tables n'ont pas été supprimées et recréées ou les tables résolues à l'aide de la valeur *LIBL n'ont pas été modifiées.
  • Vérification de l'existence des index utilisés pour implémenter la requête.
  • Vérification que la taille de la table ou la sélectivité des prédicats n'ont pas changé de manière significative.
  • Vérification que les options QAQQINI n'ont pas été modifiées.