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 et SQL. Discussion :

Requete creation de table, execution horriblement longue [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut Requete creation de table, execution horriblement longue
    Bonjour,

    J'ai créé une requete qui rammene entre 6 000 et 7 000 lignes et je veux basculer les données dans une table.

    Lors de l'execution de la requete, la creation de la table met plus de 4 heures

    Je sais que je suis sur serveur au boulot, mais l'affichage des resultats met que quelques secondes.

    Pourquoi la creation de la table est si longue et que puis je faire pour dimminuer considerablement ce temps ?

    Voici mon code SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT dbo_Carb_Mvt_ST5_ST6.Code_Site, dbo_Carb_Mvt_ST5_ST6.Date_Mvt, dbo_ENGIN_VUE.CodeEngin, dbo_Carb_Mvt_ST5_ST6.Type_Perception, dbo_Carb_Mvt_ST5_ST6.Origine_Carb, dbo_Carb_Mvt_ST5_ST6.Type_Carb, dbo_Carb_Mvt_ST5_ST6.Volume_Carb, dbo_Carb_Mvt_ST5_ST6.Potentiel_Kmjour, IIf(DLast("Date_Mvt","dbo_Carb_Mvt_ST5_ST6","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#"))<=[chgt_comptKM] And [Date_Mvt]>=[chgt_comptKM],"chgt compteur",DLast("Potentiel_Kmjour","dbo_Carb_Mvt_ST5_ST6","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#"))) AS Ancien_Potentiel_Km, IIf([Ancien_Potentiel_Km]="chgt compteur",0,[Potentiel_Kmjour]-[Ancien_Potentiel_Km]) AS parcouru, IIf([parcouru]>0,([dbo_Carb_Mvt_ST5_ST6]![Volume_Carb]*100)/[parcouru],0) AS Conso_au_100km, dbo_Carb_Mvt_ST5_ST6.Potentiel_Hjour, IIf(DLast("Date_Mvt","dbo_Carb_Mvt_ST5_ST6","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#"))<=[chgt_comptHM] And [Date_Mvt]>=[chgt_comptHM],"chgt compteur",DLast("Potentiel_Hjour","dbo_Carb_Mvt_ST5_ST6","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#"))) AS Ancien_Potentiel_moteur, IIf([Ancien_Potentiel_moteur]="chgt compteur",0,[Potentiel_Hjour]-[Ancien_Potentiel_moteur]) AS Nb_heures_moteur, IIf([Nb_heures_moteur]>0,([dbo_Carb_Mvt_ST5_ST6]![Volume_Carb]*1)/[Nb_heures_moteur],0) AS Conso_litre_heure_mot, dbo_Carb_Mvt_ST5_ST6.Potentiel_Hequipement, IIf(DLast("Date_Mvt","dbo_Carb_Mvt_ST5_ST6","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#"))<=[chgt_comptHE] And [Date_Mvt]>=[chgt_comptHE],"chgt compteur",DLast("Potentiel_Hequipement","dbo_Carb_Mvt_ST5_ST6","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#"))) AS Ancien_Potentiel_equipement, IIf([Nb_heures_equipement]>0,([dbo_Carb_Mvt_ST5_ST6]![Volume_Carb]*1)/[Nb_heures_equipement],0) AS Conso_litre_heure_equi, IIf([Ancien_Potentiel_equipement]="chgt compteur",0,[Potentiel_Hequipement]-[Ancien_Potentiel_equipement]) AS Nb_heures_equipement, dbo_Carb_Mvt_ST5_ST6.Commentaires, Format([date_chgt_ComptKM],"dd/mm/yyyy") AS chgt_comptKM, Format([date_chgt_ComptHM],"dd/mm/yyyy") AS chgt_comptHM, Format([date_chgt_ComptHE],"dd/mm/yyyy") AS chgt_comptHE, dbo_Carb_Mvt_ST5_ST6.Codeident INTO consommation
    FROM (dbo_Carb_Mvt_ST5_ST6 INNER JOIN dbo_ENGIN_VUE ON dbo_Carb_Mvt_ST5_ST6.Codeident = dbo_ENGIN_VUE.CodeIdentite) LEFT JOIN Req_chgt_compt_2011 ON dbo_ENGIN_VUE.CodeEngin = Req_chgt_compt_2011.CodeEngin
    WHERE (((Year([Date_Mvt]))=Year(Now())) AND ((Month([Date_Mvt]))>=([]-1) And (Month([Date_Mvt]))<([]+1)));
    Ma requete sert a recuperer et a calculer la conso au 100 km ou à l'heure, je mets toutes les données dans la table, puis je fais une autre requete pour comparer la conso à l'instant T avec celle d'avant.

    Merci pour votre aide.

    Seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 341
    Points : 23 800
    Points
    23 800
    Par défaut
    À l'oeil je soupsconne les DLast().

    Voit si tu peux les remplacer par des requêtes ou si tu peux passer par une table temporaire qui enregistrera le DLast().

    Autre test avant de tout casser : ouvrir ta requête qui te donne les résultats instantané et sauter directement au dernier enrgistrement ... pour voir le temps que cela prend.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par marot_r Voir le message
    À l'oeil je soupsconne les DLast().

    Voit si tu peux les remplacer par des requêtes ou si tu peux passer par une table temporaire qui enregistrera le DLast().

    Autre test avant de tout casser : ouvrir ta requête qui te donne les résultats instantané et sauter directement au dernier enrgistrement ... pour voir le temps que cela prend.

    A+
    Bonjour,

    Désolé de vous répondre si tardivement mais je n'ai pas pu me remettre sur ce dossier avant ce jour.

    en effet c'est la faute au Dlast car quant je veux voir le dernier enregistrement, c'est long aussi.

    Je vais voir pour trouver une solution.

    Merci encore et désolé du retard

    Seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 341
    Points : 23 800
    Points
    23 800
    Par défaut
    Un truc qui ne m'avait pas frappé mais Dlast() te donnes le dernier enregistrement dans la table dans l'ordre où Access a décidé de les stocker. Si tu veux le dernier enregistrement selon un critère précis (ex la dernière date) il faut utiliser DMax().

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Problèmes sur lancement d'une requete creation de table depuis VBE
    Par Jeanpierre71 dans le forum VBA Access
    Réponses: 8
    Dernier message: 22/12/2011, 21h12
  2. requete creation de table
    Par gentelmand dans le forum SQL
    Réponses: 1
    Dernier message: 28/02/2010, 20h57
  3. [AC-2007] requete creation de table
    Par hboisteau dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 07/01/2010, 23h44
  4. Réponses: 2
    Dernier message: 21/08/2007, 22h11
  5. Réponses: 2
    Dernier message: 13/05/2006, 13h25

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