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 :

Accès à la DB trop lent


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Par défaut Accès à la DB trop lent
    J'ai une base de donnée client de 26000 records.

    J'utilise DbExpress pour accéder la DB (Firebird 1.5 sur serveur linux avec réseau 1 Gbite).

    Je mets un TSQLQuery, un datasetProvider et un CLientDataSet. En design time, quand j'ouvre le clientdataset, il met 2 secondes. Trop lent. Un findkey (sur un champ bien indexé) met aussi 2-3 secondes. Trop lent. Les utilisateurs vont devenir fou.

    Est-ce que quelqu'un peut m'aider pour que cela aille plus vite?

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Tu as combien de champs dans la table clients ? Dans ta requete tu les remonte tous ou seulement certains ?

    Essaye aussi avec les composants TIBDataset ou TIBQuery.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Par défaut
    Citation Envoyé par Harry
    Tu as combien de champs dans la table clients ? Dans ta requete tu les remonte tous ou seulement certains ?

    Essaye aussi avec les composants TIBDataset ou TIBQuery.
    28 champs. Et je les remonte tous (le but premier et de les afficher dans une grille.Mais je vais peut-être changer de manière de faire si je ne trouve pas une manière d'aller plus vite)

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    essai Locate au lieu de findKey ca sera peut être beacoup plus rapide
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Par défaut
    Citation Envoyé par Malatar
    essai Locate au lieu de findKey ca sera peut être beacoup plus rapide
    Cela m'étonnerait, car locate n'utilise pas d'index, findkey oui. Et jusqu'à nouvelk ordre, une recherche indexée sur 26000 record va plus vite qu'une recherche séquentielle...

  6. #6
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    L'ideal pour accélérer c'est d'être le plus specifique possible dans ta requete :
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select ID, Nom, Prenom FROM Clients Where Nom LIKE 'eponette'
    Lister tous les champs de tous les enregistrement ca va forcément prendre beaucoup de temps.

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Par défaut
    Citation Envoyé par Harry
    L'ideal pour accélérer c'est d'être le plus specifique possible dans ta requete :
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select ID, Nom, Prenom FROM Clients Where Nom LIKE 'eponette'
    Lister tous les champs de tous les enregistrement ca va forcément prendre beaucoup de temps.
    Le truc, c'est quand je fais une requête 'select * from client', dans mon db manager, cela prend 15 millisecondes. Ouvrir un TQuery, cela va vite. Par contre, le dataset, c'est lent...

  8. #8
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par eponette
    Le truc, c'est quand je fais une requête 'select * from client', dans mon db manager, cela prend 15 millisecondes. Ouvrir un TQuery, cela va vite. Par contre, le dataset, c'est lent...
    Dans ce cas met ton code SQL dans le SelectSQL du dataset et si ce n'est pas assez rapide utilise des Query's. Mais franchement j'ai resolu ce même genre de problèmes en effectuant des requetes précises dans mes dataset. (j'utilise les composants IB).

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Pour l'ouverture du clientdataset tu ne pourras pas aller plus vite (26000 enregistrement quand même)
    Pour l'autre problème , oublie le findkey et préfére les requetes, c'est beaucoup plus rapide.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Par défaut
    Il n'y a pas d'autres composants d'accès à la DB plus rapide? Dommage.

    Le findkey est important pour pointer le pointeur dans une grille.... Je ne vois pas comment faire avec une requête...

Discussions similaires

  1. [HF17] acces trop lent
    Par fbe66 dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 18/09/2013, 09h38
  2. Convolution trop lente...
    Par progfou dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 05/08/2006, 11h44
  3. boucle while trop lente
    Par atouze dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 16h35
  4. [SAGE] ODBC trop lent
    Par tileffeleauzed dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 14/11/2004, 09h56
  5. Envoi de mail trop lent
    Par MASSAKA dans le forum ASP
    Réponses: 3
    Dernier message: 15/10/2004, 10h57

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