Bonjour,

voilà, j'aimerai améliorer une requête mais j'ai beu la tourner dans tout les sens, ça reste très moyen. si quelqu'un a une idée ... en fait, je pensais qu'il existait des "coups spéciaux" pour joindre efficacement deux tables par des chaines de caractère.

Je m'explique. J'ai deux petites requêtes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT period_id /* entier*/, eac2 /*decimal*/, ca_short_name /* varchar2*/
    FROM admuser.histo_tasksum
    WHERE (wp_bo_number = 'CA'
        OR wp_bo_number = 'MR'
        OR wp_bo_number = 'MC'
        OR wp_bo_number = 'PC')
ici, elle met 93 ms et retourne 57000 lignes

et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT wbs_short_name /*varchar2*/
        FROM admuser.projwbs
        WHERE proj_node_flag = 'Y'
        AND delete_date IS NULL
        START WITH wbs_short_name IN ('P-01034')
        CONNECT BY PRIOR wbs_id = parent_wbs_id
ici 531 ms et 294 lignes.

Je veux joindre ces deux sous requêtes par ca_short_name = wbs_short_name


et là je me retrouve avec un temps d'exécution variant entre 15 et 20 sec suivant la technique que j'emploie ... (tout ça pour récupérer 383 lignes)

Avez vous une technique pour accélérer cette requete ? genre transformer la chaine en nombre

[EDIT] si j'enlève le WHERE (wp_bo_number = 'CA' ... j'atteins les 4 sec