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

SQL Firebird Discussion :

FB 2.1 Requete dure longtemps


Sujet :

SQL Firebird

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut FB 2.1 Requete dure longtemps
    Bonjour,

    Voici ma requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select T1.dt_hr,T1.NOM_PROJET,T1.REF_TURBINE,T2.VITESSE_VENT_NACELLE from (select max(DATE_HEURE) as dt_hr,NOM_PROJET,REF_TURBINE from DATA_10MIN group by NOM_PROJET,REF_TURBINE) T1
    inner join DATA_10MIN T2 on T1.Dt_hr=T2.Date_HEURE and T1.NOM_PROJET=T2.NOM_PROJET and T1.REF_TURBINE=T2.REF_TURBINE
    Le but de la requete est de me ramener des elements de la table DATA_10MIN groupés par projet et ref_turbine
    Voici le plan PLAN JOIN (SORT (T1 DATA_10MIN NATURAL), T2 INDEX (I_DATA_10MIN_DATE_HEURE))

    A l'heure actuelle, cette requete dure plus de 3 minutes et je me demandais si il y avait un moyen pour l'optimiser?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Peut-être comme ceci ? (Utilisation de CTE)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WITH T1 AS (SELECT max(DATE_HEURE) AS dt_hr,NOM_PROJET,REF_TURBINE FROM DATA_10MIN GROUP BY NOM_PROJET,REF_TURBINE)
    SELECT T1.dt_hr,T1.NOM_PROJET,T1.REF_TURBINE,T2.VITESSE_VENT_NACELLE FROM  T1 INNER JOIN DATA_10MIN T2 ON T1.Dt_hr=T2.Date_HEURE AND T1.NOM_PROJET=T2.NOM_PROJET AND T1.REF_TURBINE=T2.REF_TURBINE
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Bonjour Sergio,

    Merci pour la réponse. Le temps est resté quasiment le meme

    Amitiés

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    et le plan ?
    c'est quoi les clé primaires des tables ?
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Bonjour Philippe,

    Le plan c'est pas ce que j'ai donné dans le 1er post?

    Pour les indexes, il y en a sur :
    DATE_HEURE
    NOM_PROJET
    REF_TURBINE
    VITESSE_VENT_NACELLE

    Pour la clé primaire c'est un ID de type Bigint

    Merci

  6. #6
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    je voulais le plan de la deuxième requete
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Voici le plan de la deuxieme requete

    PLAN JOIN (SORT (T1 DATA_10MIN NATURAL), T2 INDEX (I_DATA_10MIN_DATE_HEURE))

  8. #8
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    ça veut dire que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT max(DATE_HEURE) AS dt_hr,NOM_PROJET,REF_TURBINE FROM DATA_10MIN GROUP BY NOM_PROJET,REF_TURBINE
    n'utilise pas d'index

    hum,

    tu peux essayer en créant un index sur : (NOM_PROJET,REF_TURBINE,DATE_HEURE)
    pour voir ?

    et réessayer les deux requetes ? et donner leur plan ?
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Ah bein là ca va 2 fois plus vite!!!

    Dans les 2 cas il se sert du nouvel index

    PLAN JOIN (T1 DATA_10MIN ORDER I_DATA_10MIN_TEST, T2 INDEX (I_DATA_10MIN_TEST))

    Merci

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/03/2014, 16h20
  2. [WD17] fermeture appli dure longtemps
    Par chapeau_melon dans le forum WinDev
    Réponses: 7
    Dernier message: 17/01/2013, 21h40
  3. Requête qui dure longtemps sans résultat
    Par SALMHSN dans le forum PL/SQL
    Réponses: 13
    Dernier message: 03/05/2011, 12h04
  4. faire marcher un script qui dure longtemps
    Par laurentSc dans le forum Langage
    Réponses: 21
    Dernier message: 11/02/2011, 18h38
  5. pourquoi une requete dure si longtemps
    Par fscli dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/06/2006, 11h58

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