Bonjour,
J'aurai besoin d'aide pour l'optimisation d'une requête.
Table A
Table B
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 IdA | IdB --------- 1 | c2 2 | c1 3 | f3 4 | c4 5 | e4 6 | c2 7 | d4
Comme résultat je souhaiterai donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 IdB | a | b ------------ c2 | 1 | 2 c1 | 1 | 4 f3 | 1 | 6 c4 | 2 | 3 e4 | 6 | 5 c2 | 1 | 3 d4 | 4 | 4
Voici ma requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 IdA | IdB | a | b ------------ 2 | c1 | 1 | 4 4 | c4 | 2 | 3
Or je manipule des millions d'enregistrements et je souhaiterai optimiser tout cela.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT * FROM TableA A JOIN TableB B ON A.IdB = B.IdB AND IdB like 'c%' WHERE IdB not in (Select IdB FROM TableB WHERE a = '1' AND b in ('2','3','5'))
J'ai regardé le cours : http://sqlpro.developpez.com/cours/optimiser/#L9
Et la règle 10 me montre bien comment optimiser le "not in" mais j'avoue ne pas bien saisir le "LEFT OUTER JOIN".
Même après ce cours http://sqlpro.developpez.com/cours/s...ntures/#LIII-C j'ai quelques doutes quand à la construction de ma requête.
En effet je bloque avec la condition "AND IdB like 'c%'", comment dois-je agencer tout ça ?
Merci
Partager