Bonjour à tous,

J'ai une grosse lenteur sur ce genre de requête :

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
 
SELECT
   CUST.CUSTID,
   CUST.CUSTCODE,
   CUST.NAME
FROM
   CUSTOMERS CUST
WHERE
   CUSTID IN
     SELECT
        CUSTID
     FROM
        ORDERS
     WHERE
        ...
   UNION
    SELECT
       CUSTID
    FROM
       XXX
    WHERE
       ...
  UNION
   SELECT
      CUSTID
   FROM
      YYY
   WHERE
      ...
En gros je souhaite récupérer des infos clients qui remplissent 3 conditions (mes trois sous requêtes unies).
Chaque sous requête qui récupère les identifiants sont rapide à exécuter. Mais sélectionner les infos clients sont l'identifiant est compris dans une de ces trois requêtes est très long à exécuter...

J'ai tenté, au lieu de faire une union, de faire ceci :
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
 
SELECT
   CUST.CUSTID,
   CUST.CUSTCODE,
   CUST.NAME
FROM
   CUSTOMERS CUST
WHERE
   CUSTID IN
   (
     SELECT CUSTID FROM ORDERS ...
   )
   OR CUSTID IN
   (
     sous requête 2
   )
   OR CUSTID IN
   (
     sous requête 3
   )
Mais rien à faire, c'est toujours très long

Est-ce qu'il y a quelque chose de plus optimisé pour faire ce genre de sélection ?

Merci beaucoup,

A bientôt