Création d'instructions d'optimisation de niveau d'instruction

La section Instructions d'optimisation au niveau de l'instruction du profil d'instruction est constituée d'une ou de plusieurs demandes d'accès ou de jointure qui spécifient les méthodes d'accès ou de jointure des tables dans l'instruction.

Avant de commencer

Épuiser toutes les autres options de réglage. Exemple :
  1. Vérifiez que les statistiques de distribution des données ont été récemment mises à jour par l'utilitaire RUNSTATS .
  2. Vérifiez que le serveur de données s'exécute avec le paramètre de classe d'optimisation approprié pour la charge de travail.
  3. Vérifiez que l'optimiseur dispose des index appropriés pour accéder aux tables référencées dans la requête.

Procédure

Pour créer des instructions d'optimisation au niveau de l'instruction:

  1. Créez le profil d'optimisation dans lequel vous souhaitez insérer les instructions de niveau instruction.
  2. Exécutez la fonction EXPLAIN sur l'instruction pour déterminer si les instructions d'optimisation sont utiles. Continuez si cela semble être le cas.
  3. Obtenez l'instruction original en exécutant une requête similaire à la suivante:
       select statement_text
         from explain_statement
         where explain_level = '0' and
           explain_requester = 'SIMMEN' and
           explain_time      = '2003-09-08-16.01.04.108161' and
           source_name       = 'SQLC2E03' and
           source_version    = '' and
           queryno           = 1
  4. Editez le profil d'optimisation et créez un profil d'instruction, en insérant le texte de l'instruction dans la clé d'instruction.
    Exemple :
       <STMTPROFILE ID="Guidelines for SAMP Q9">
          <STMTKEY SCHEMA="SAMP"><![CDATA[SELECT S.S_NAME, S.S_ADDRESS, S.S_PHONE,
            S.S_COMMENT
            FROM PARTS P, SUPPLIERS S, PARTSUPP PS
            WHERE P_PARTKEY = PS.PS_PARTKEY AND S.S_SUPPKEY = PS.PS_SUPPKEY
            AND P.P_SIZE  = 39 AND P.P_TYPE  = 'BRASS' AND S.S_NATION
            = 'MOROCCO' AND
            PS.PS_SUPPLYCOST = (SELECT MIN(PS1.PS_SUPPLYCOST)
            FROM PARTSUPP PS1, SUPPLIERS S1
            WHERE P.P_PARTKEY  = PS1.PS_PARTKEY AND S1.S_SUPPKEY = PS1.PS_SUPPKEY
            AND S1.S_NATION  = S.S_NATION)]]>
          </STMTKEY>
      </STMTPROFILE>
  5. Insérez les instructions d'optimisation au niveau de l'instruction après la clé d'instruction. Utilisez des noms exposés pour identifier les objets référencés dans les demandes d'accès et de jointure.
    Voici un exemple de demande de jointure:
       <OPTGUIDELINES>
         <HSJOIN>
           <TBSCAN TABLE='PS1'/>
           <IXSCAN TABLE='S1'
             INDEX='I1'/>
         </HSJOIN>
       </OPTGUIDELINES>
  6. Validez le fichier et enregistrez-le.

Résultats

Si les résultats attendus ne sont pas atteints, apportez des modifications aux instructions ou créez des instructions supplémentaires et mettez à jour le profil d'optimisation, le cas échéant.