Un hint dans BO

Des fois les plans d’exécution adoptés par le moteur d’Oracle ne sont pas forcément les meilleurs.
Même si les stats à jour, une requête peut mettre un certain temps, voire ne jamais se terminer !

La solution made in DBA consiste généralement à rajouter un hint, c’est à dire une petite ligne de code pour forcer le plan d’exécution.

Exemple :

SELECT /*+ FULL(SALES) */
  ...
FROM  
  SALES,  
  ....
-- ici on ne passe par les index, on lit la table complètement

Pour coder ce hint dans Business Objects, on peut :

  • modifier le sql généré
    C’est dommage, on perd la fonctionnalité de sql dynamique de BO, avec tous les inconvénients que cela engendre : maintenance difficile, désynchronisation de la requête avec l’univers.
  • modifier la propriété hint de la connexion.
    Mais toutes les requêtes seront impactées, ou il faut créer une nouvelle connexion.
  • créer un nouvel objet

Cette dernière solution est à privilégier.
Il suffit de créer un objet technique pointant sur une constante ( 0, 1 ou NULL ), à mettre en 1ère position dans l’éditeur de requête.

bo_hint

La formule de l’objet est

/*+ FULL(SALES) */ 0

Et on le définit sur la table SALES ( bouton Tables … ) pour éviter les alertes lors de la vérification de l’intégrité de l’univers.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>