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 :
- Vérifiez que les statistiques de distribution des données ont été récemment mises à jour par l'utilitaire RUNSTATS .
- 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.
- 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:
- Créez le profil d'optimisation dans lequel vous souhaitez insérer les instructions de niveau instruction.
- 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.
- 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
- 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>
- 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>
- 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.