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

Bases de données Delphi Discussion :

Execution des requêtes


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 79
    Points : 58
    Points
    58
    Par défaut Execution des requêtes
    Bonjour;
    J'ai une aplication développez avec delphi 7 en utilisant les composant fibplus,
    a l'execution d'une requette sur une table qui contient 4402 enregistrement elle reste 2 à 3 s mais avec EMS Sql manager il execute dans 0.02 s je ne sait pas pourquoi cette défirence de vitesse?
    Je trouve que m'application est très lente comment augmenter sa rapidité?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    bonjour ,
    pour le point 1 une suggestion :
    ta requête récupère peut-être tous les enregistrements de la table contrairement à EMSSQLManager.

    Ton application est très lente , poses toi les questions suivantes
    - trop d'informations inutiles (i.e. SELECT * au lieu d'un SELECT A,B,C FROM ...)
    - Ouverture de toute la table pour la modification d'un enregistrement
    (i.e. select * from table au lieu de select * from table where cle='xxx')
    c'est fou ce que j'ai pu améliorer la vitesse d'exécution rien qu'en utilisant ces 2 questions
    - dans le cas d'un dbgrid récupération d'une ensemble réduit d'enregistrement pas de toute la table
    - utilisation de recordcount (toujours lent)
    - bonnes Indexation de la BDD (vérifer les plans de requête)
    - problèmes réseaux
    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 émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut;

    2 à 3 sec pour 4402 enregistrements ! Je voudrais bien voir cette requête. Sauf si elle fait des calculs conditionnés.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 79
    Points : 58
    Points
    58
    Par défaut
    j'utilise cette requette:
    SELECT Code_P, Design_P, Unite_P, Code_FM FROM ARTICLE
    dans pfibDataset

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    effectivement , c'est on ne peu plus court
    Maintenant comme le dit Just-Soft , y aurait-il un évènement / calcul quelconque sur chaque enregistrement au niveau de ton programme ?

    [Edit]
    Comment accèdes-tu à la BDD (chaine de connexion), mode de transaction
    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

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par tarek_ep Voir le message
    j'utilise cette requette:
    SELECT Code_P, Design_P, Unite_P, Code_FM FROM ARTICLE
    dans pfibDataset
    comme y a rien de particulier dans ta requête alors va falloir voir ton mode de connexion à la BDD. Autrement dit, lors d'un second appel de ta requête est-elle aussi lente à répondre ou met-elle moins de temps que le premier accès ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  7. #7
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    mmm..je pense que ce n'est lié ni à la requète ni à la connexion (au vu des éléments fournis) mais peut être que ta requète 'approvisionne' un composant style un DBGRID ou autre.
    Je te conseille plutot de vérifier avec un profiler :
    http://www.prodelphi.de/

  8. #8
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par philnext Voir le message
    mmm..je pense que ce n'est lié ni à la requète ni à la connexion (au vu des éléments fournis) mais peut être que ta requète 'approvisionne' un composant style un DBGRID ou autre.
    Je te conseille plutot de vérifier avec un profiler :
    http://www.prodelphi.de/
    +1

    Faudrait le tester et l'approuver !
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  9. #9
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par tarek_ep Voir le message
    l'execution d'une requette sur une table qui contient 4402 enregistrement elle reste 2 à 3 s mais avec EMS Sql manager il execute dans 0.02 s je ne sait pas pourquoi cette défirence de vitesse?
    Ca ne me surprend pas tant que ça.
    Je ne serais pas étonné que EMS Sql manager se contente d'ouvrir un curseur sur la table sans charger toutes les données (20 ms pour charger 4402 enregistrements c'est vraiment très court, même en ayant les données en cache dans le SGBD et en travaillant en local) alors que dans ton appli, l'ouverture de la table doit provoquer son chargement complet en mémoire.

    Ce n'est pas le temps d'exécution de la requête qui doit être important mais le temps de lecture des données.

    Pour améliorer les perfs, SergioMaster t'a déjà donné la méthode :
    - Il faut réduire le volume des informations retournées (en limitant les champs demandés dans le SELECT, avec des filtres appropriés, en évitant d'exécuter 50 fois la même requête pour rien...).
    - Il faut vérifier les plans d'exécution des requêtes : s'assurer qu'il y a bien les bons indexes aux bons endroits...

    Selon les requêtes tu auras le meilleur gain en jouant sur l'un ou l'autre. C'est pour ça qu'il est très important d'avoir un moyen de tracer précisément l'exécution des requêtes, en identifiant le temps d'exécution de la requête sur le serveur (le temps avant que ce dernier ne rende la main et fournisse le curseur de lecture des résultats) et le temps de fetch des données.

Discussions similaires

  1. [2008R2] probleme de lenteur lors de l'execution des requêtes
    Par guiguipeux dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/02/2013, 15h31
  2. [SQL2K] Executer un fichier contenant des requêtes
    Par basaltik dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/02/2008, 11h20
  3. executer des requêtes sous VBA
    Par 18mar dans le forum VBA Access
    Réponses: 3
    Dernier message: 22/12/2007, 08h59
  4. Lenteur d'execution des requêtes de l'exe
    Par napegadie dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/08/2007, 11h51
  5. Evaluer des requêtes SQL avant leurs execution ?
    Par BkD35 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/04/2007, 20h20

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