Bonjour ,

est-il possible d'optimiser cette requête en remplaçant les "UNION" car d'après cet article http://sql.developpez.com/optimiser/ ( paragraphe 9: "Transformations usuelles" ) c'est préférable, mais là je suis dans le brouillard pour la syntaxe.

Je travaille avec MS SERVER Express 2005.


creation des tables + insertion des données:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
USE [essai_requete]
CREATE TABLE [dbo].[T_id]
	([id] [int] NOT NULL UNIQUE)
CREATE TABLE [dbo].[T_Table1]
	([idT1] [int] NOT NULL UNIQUE)
CREATE TABLE [dbo].[T_Table2]
	([idT2] [int] NOT NULL UNIQUE)
CREATE TABLE [dbo].[T_Table3]
	([idT3] [int] NOT NULL UNIQUE)
CREATE TABLE [dbo].[T_Table4]
	([idT4] [int] NOT NULL UNIQUE)
 
go
insert into T_id values(1)
insert into T_id values(2)
insert into T_id values(3)
insert into T_id values(4)
insert into T_id values(6)
insert into T_id values(7)
insert into T_id values(8)
insert into T_id values(9)
 
insert into T_Table1 values(4)
insert into T_Table1 values(7)
insert into T_Table1 values(8)
 
insert into T_Table2 values(5)
insert into T_Table2 values(6)
 
insert into T_Table3 values(2)
insert into T_Table3 values(3)
insert into T_Table3 values(4)
insert into T_Table3 values(5)
 
insert into T_Table4 values(1)
insert into T_Table4 values(2)
insert into T_Table4 values(6)
go
Requete à optimiser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
SELECT id
FROM T_id
JOIN (	SELECT idt1 FROM T_table1
	UNION
	SELECT idt2 FROM T_table2) T1_2 
ON T_id.id = T1_2.idt1
JOIN (	SELECT idt3 FROM T_table3
	UNION
	SELECT idt4 FROM T_table4) T3_4 
ON T_id.id = T3_4.idt3
Merci.