Bonjour à tous,
Je souhaiterais optimiser le temps d'exécution d'une requête contenant plusieurs sous-requêtes en UNION ALL et j'aurais besoin de savoir où il est préférable de placer ma ou mes clauses WHERE pour restreindre la profondeur de l'historique retourné.
Je suis certain que ma question est très basique, et je pourrais évidemment faire le test en réel, mais comme le temps d'exécution actuel de ma requête est de plus de 3 heures, mes tests risquent d'être très longs... Donc j'apprécierais vraiment votre aide svp.
Donc, est-il plus rapide de faire ceci (une seule clause WHERE dans la requête principale) :
Ou bien ceci ? (une clause WHERE dans chaque sous-requête) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT req.champ1, req.annee_creation FROM ( SELECT champ1, annee_creation FROM table1 UNION ALL SELECT champ1, annee_creation FROM table2 ) req WHERE req.annee_creation = 2020;
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT req.champ1, req.annee_creation FROM ( SELECT champ1, annee_creation FROM table1 WHERE annee_creation = 2020 UNION ALL SELECT champ1, annee_creation FROM table2 WHERE annee_creation = 2020 ) req;
Bonne journée.
Partager