Bonjour,

Je cherche à construire une vue à partir de 4 tables, et il me semble que je dois utiliser un subselect.
Or lorsque je construit cette vue et que je l'exécute, le serveur mysql se met à "mouliner", occupe plus de 50% de la CPU... voire beaucoup plus et ne rend pas la main dans un temps humainement raisonnable.
Voici donc le modèle :

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
Table T1
Id
Tag
T3_Id
T4_Id
 
Table T2
Owner_T1Id
Collect_T1Id
Value
 
Table T3
Id
Name
 
Table T4
Id
Place
Toutes les tables utilisent le moteur InnoDB.

Il apparaît que chaque enregistrement de T2 contient 2 Id de T1.
La clé de mon problème est de construire un select qui me permette de ramener à la fois le T3.Name correspondant au Owner_T1Id et le T3.Name correspondant au T2.Collect_T1Id. Pareil pour le LastName de T4.
J'avais utilisé des subselect mais ça semble conduire au problème évoqué, et ce sur 2 machines, et deux install de mysql complètement différentes.
J'exclue donc à priori un artéfact dû à une mauvaise install.

Le select ressemble à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Select T1.Tag,
         T2.Owner_T1Id,
         T2.Collect_T1Id
         (select T3.Name from T3 where T3.Id=T2.Collect_T1Id) as CollectName
         (select T4.LastName from T4 where (T3.Id=T2.Collect_T1Id and T3.T4_Id=T4.Id) as Place
from T1,T2
where T2.Owner_T1Id=T1.Id
Il y a en réalité plus de champ à afficher, mais j'ai isolé ici ce qui posait problème et que je voudrais écrire autrement.

Merci de votre aide
Cordialement,
J-L