Salut

Pour simplifier (et raccourcir le temps de calcul) ma requete, je la divise en 3 : pour le moment, je crée 2 tables temporaires a partir de 2 requetes, puis je fais une 3eme requete sur ces 2 tables.

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
40
41
 
DROP TABLE IF EXISTS Tp1;
CREATE TEMPORARY TABLE Tp1 (
  Frame int(10) unsigned default NULL,
  Pbsur decimal(10,3) default NULL,
  Pbcal decimal(10,3) default NULL);
 
DROP TABLE IF EXISTS Tp2;
CREATE TEMPORARY TABLE Tp2 (
	Frame int(10) unsigned default NULL, 
	Ele decimal(10,3) default NULL,
	Vdw decimal(10,3) default NULL,
	Bad decimal(10,3) default NULL);
 
 
INSERT INTO Tp1 
SELECT 	MM_PBSA_PB.Frame, MM_PBSA_PB.Pbsur, MM_PBSA_PB.Pbcal
FROM 	MM_PBSA_PB, ParamPB, Molecule, Trajectory, prmtop
WHERE 	MM_PBSA_PB.idParamPB = ParamPB.idParamPB
	AND ParamPB.idMolecule = Molecule.idMolecule
	AND Molecule.Name = "whole"
	AND ParamPB.idTraj = Trajectory.idTraj
	AND Trajectory.Name = "nscm"
	AND ParamPB.idPrmtop = prmtop.idPrmtop
	AND prmtop.Name = "mbondi";
 
 
INSERT INTO Tp2
SELECT 	MM_PBSA_GAS.Frame, MM_PBSA_GAS.Ele, MM_PBSA_GAS.Vdw, MM_PBSA_GAS.Bad
FROM 	MM_PBSA_GAS, ParamPhGas, Molecule, Trajectory 
WHERE 	MM_PBSA_GAS.idParamPhGas = ParamPhGas.idParamPhGas
	AND ParamPhGas.idMolecule = Molecule.idMolecule
	AND Molecule.Name = "whole"
	AND ParamPhGas.idTraj = Trajectory.idTraj
	AND Trajectory.Name = "nscm";
 
 
SELECT Tp2.Ele, Tp1.Pbsur
FROM Tp1, Tp2
WHERE Tp1.Frame = Tp2.Frame
ORDER BY Tp1.Frame ASC;
Ma base de données est peu utilisée, et surtout les champs ne sont pas ou EXTREMEMENT rarement modifiées, mais il y a beaucoup d'enregistrements.

Question : Est-e que ma technique des tables temporaires est la bonne, ou bien serait-il + judicieux d'utiliser des VIEW ? et si oui, pourquoi ?