Bonjour à tous,
Voilà je fais la requête suivante:

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
 
SELECT DESCRIPTION
FROM partenaire
WHERE UNB
IN (
 
SELECT UNB
FROM message
WHERE ID_MESSAGE
IN (
 
SELECT ID_MESSAGE
FROM commande
WHERE NADDP NOT 
IN (
 
SELECT NADDP
FROM compte
WHERE PAYS = 'NL'
AND CODE_SUPPLIER = 'M'
)
)
)
Qui me prend énormément de ressource et de temps, tellement que je suis obligé de l'arrêter !!

De très bon conseils m'ont été précédemment donné sur le forum mais je crois bien que je n'y arrive pas.
Je n'arrive pas à utiliser les index que j'ai mis sur mes tables, comme le montre un EXPLAIN de la requête du dessus:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
id select_type table type possible_keys key key_len ref rows Extra 
 
1 PRIMARY partenaire ALL NULL NULL NULL NULL 109 Using where 
 
2 DEPENDENT SUBQUERY message ALL NULL NULL NULL NULL 4925 Using where 
 
3 DEPENDENT SUBQUERY commande ALL NULL NULL NULL NULL 18168 Using where 
 
4 DEPENDENT SUBQUERY compte ref CODE_SUPPLIER,PAYS PAYS 2 const 479 Using where
Pourtant, j'ai mis les index suivants:
Sur table compte: PAYS et CODE_SUPPLIER
Sur table commande: NADDP
Sur table message: ID_MESSAGE
Sur table partenaire: UNB

Voici les show create table des différentes tables:
* Table compte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
CREATE TABLE `compte` (
`ID_COMPTE` int(6) NOT NULL auto_increment,
`NADDP` varchar(20) NOT NULL default '',
`CODE_SUPPLIER` char(1) NOT NULL default '',
`PAYS` char(2) NOT NULL default '',
PRIMARY KEY  (`ID_COMPTE`),
KEY `CODE_SUPPLIER` (`CODE_SUPPLIER`),
KEY `PAYS` (`PAYS`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
* Table commande
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
 
CREATE TABLE `commande` (
`ID_COMMANDE` int(8) NOT NULL auto_increment,
`ID_MESSAGE` int(6) NOT NULL default '0',
`BGM` varchar(50) NOT NULL default '-----',
`DTM137` varchar(15) default NULL,
`NADBY` varchar(30) default NULL,
`NADSE` varchar(30) default NULL,
`NADSU` varchar(30) default NULL,
`NADDP` varchar(30) default NULL,
`NBLIGNES` int(4) default NULL,
`DATE_RECEPTION_DOC` varchar(6) NOT NULL default '',
`HEURE_RECEPTION_DOC` varchar(6) NOT NULL default '',
PRIMARY KEY  (`ID_COMMANDE`),
KEY `NADDP` (`NADDP`),
KEY `DATE_RECEPTION_DOC` (`DATE_RECEPTION_DOC`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
* Table message
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
CREATE TABLE `message` (
`ID_MESSAGE` int(6) NOT NULL auto_increment,
`UNB` varchar(30) default NULL,
`UNOA` varchar(30) default NULL,
`DATE` varchar(15) default NULL,
`NOM` varchar(20) default NULL,
`DATECREATION` varchar(20) default NULL,
`HEURECREATION` varchar(6) default NULL,
`TAILLE` int(10) default '0',
PRIMARY KEY  (`ID_MESSAGE`),
KEY `ID_MESSAGE` (`ID_MESSAGE`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
* Table partenaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
CREATE TABLE `partenaire` (
`UNB` varchar(35) NOT NULL default '',
`QUALIFIANT` varchar(4) NOT NULL default '',
`FICHIER_SORTIE` varchar(8) NOT NULL default '',
`DESCRIPTION` varchar(35) NOT NULL default '',
PRIMARY KEY  (`UNB`),
KEY `UNB` (`UNB`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Voilà, j'espère que vous trouverez une solution pour moi. Je pense que je n'ai pas compris quelquechose avec les index.Je suis un peu dans la m... , si vous avez une idée, je suis ultra preneur !!!

Bonne fin de matinée.