IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

VIEW ou TEMPORARY TABLE ?


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut VIEW ou TEMPORARY TABLE ?
    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 ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 424
    Points : 15 794
    Points
    15 794
    Par défaut
    si les View se recalculent automatiquement, utilise les

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    hmm, excuse, je suis plutot newbie en BD : pourrais-tu detailler/expliquer de quoi tu parles ?
    Merci

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 424
    Points : 15 794
    Points
    15 794
    Par défaut
    Citation Envoyé par Burps
    hmm, excuse, je suis plutot newbie en BD : pourrais-tu detailler/expliquer de quoi tu parles ?
    Merci
    excuse moi j'étais complétement endormi hier soir donc j'ai posté cette réponses minuscule dans le but de me rappeller ce que je dois t'expliquer

    tout d'abord étant donné que ta base n'est pas souvent modifiée tu dois optimiser tes requêtes pour la lecture, pour cela tu dois faire le maximum de traitement au moment de la modification des données. donc déjà ton système avec les tables temporaires n'est pas optimisé puisque ces tables temporaires sont crées (puis supprimées) au moment de la lecture des données.
    par contre il est possible que les View soient recalculées au moment de la modification des données donc si c'est le cas utilise les (cette phrase est mon message de hier soir )
    si ce n'est pas le cas, utilise des tables "Tp1" et "Tp2" normalles et lance les requêtes "INSERT" dès que tu modifies les données. Ainsi à la lecture, il te suffit de faire un simple "SELECT" et le résultat sera plus rapide à obtenir

Discussions similaires

  1. [Temporary Table] : mécanisme de fonctionnement
    Par PpPool dans le forum Oracle
    Réponses: 5
    Dernier message: 16/11/2006, 17h55
  2. Temporary table ressource limit
    Par dd_garion dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/08/2006, 12h30
  3. Drop of global temporary table
    Par dev_ora_moimeme dans le forum Oracle
    Réponses: 8
    Dernier message: 07/07/2006, 17h22
  4. [MYSQL5] Confirmation : create view vs temporary table ?
    Par frochard dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/01/2006, 22h46
  5. create temporary table
    Par ghostlord79 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/02/2004, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo