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 :
ici, elle met 93 ms et retourne 57000 lignes
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')
et
ici 531 ms et 294 lignes.
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
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
Partager