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 :

Vitesse et grand nombre de tuples...


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 36
    Points : 31
    Points
    31
    Par défaut Vitesse et grand nombre de tuples...
    Bonjour,

    J'ai une combo qui affiche des infos en provenance d'une base de donnée firebird. C'est une combo critique dans le sens ou elle apparait souvent dans l'application et que l'utilisateur (un vendeur) ne peut pas se permettre d'attendre le chargement des données.

    Le soucis c'est que la requête génère un résultat qui avoisine les 90 000 tuples. Donc la combo mets presque 20 secondes à ce charger. D'ou sérieux problème.

    Je voulais savoir s'il n'y avait pas un truc pour accélérer la récupération de ce genre de requête ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 913
    Points : 6 032
    Points
    6 032
    Par défaut
    Les tuples en question changent-ils frequemment ?

    Si ce n'est pas le cas (genre références d'articles), tu peux charger ces tuples au lancement de l'appli :
    - soit lors de la création des fenêtres qui contiennent cette CBox
    - soit dans une StringList qui alimente chaque CBox avant que la fenêtre propriétaire ne s'affiche. Tu pourras aussi prévoir une option permettant de recharger cette Stringlist

  3. #3
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut
    bonjour,

    le choix d'un combobox pour 90000 enrg est-il judicieux ? Ne vaudrait-il mieux pas une Grille que tu remplirai avec une gestion de pagination ? Cela te perméttrais en plus de permettre des recherches.

    @++
    Dany

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Les produits doivent être a jours, c'est impératif.

    Et j'ai essayé de déporter le remplissage de la liste à l'ouverture de la fenêtre mais du coup la fenêtre mais du temps à s'ouvrir et c'est hors de question, le vendeur veut sa fenêtre immédiatement...

    Ma combo est un peu spécial. Pour acélérer l'affichage une fois chargée, la partie de la combo qui s'ouvre est en faite une grille TVirtualStringTree qui demande les donnée quand il y en a besoin. Seulement si je fait la requête à la volée c'est trop lent.

    Pour l'instant à l'ouverture de la fenêtre parente, je lance un thread qui rempli la combo avec les données de la requête. Donc la fenêtre n'est pas bloquée. Mais si l'utilisateur ouvre la combo "trop vite" elle est encore en train de se remplir...

    De plus quand on tape quelque chose dans la combo il y a une recherche qui se lance pour séléctionner la ligne qui correspond dans la grille et si cette ligne n'est pas chargée problème !

    Je vois pas trop comment m'en sortir... :-(

  5. #5
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 913
    Points : 6 032
    Points
    6 032
    Par défaut
    Citation Envoyé par TitiFr
    Les produits doivent être a jours, c'est impératif.
    D'accord, mais les références changent-elles souvent ?

    Si c'est 1 ou 2 fois par semaine, tu peux faire l'impasse sur le (re-)chargement systématique, ou bien contrôler par un count l'évolution éventuelle du nb de références (nb au lancement de l'appli vs. nb à l'ouverture de la fenêtre)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Non ça peut être régulié. Et pas question de louper une mise à jour (produits sensible et client tatillion)

  7. #7
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 913
    Points : 6 032
    Points
    6 032
    Par défaut
    Alors, il reste ça:
    contrôler par un count l'évolution éventuelle du nb de références (nb au lancement de l'appli vs. nb à l'ouverture de la fenêtre)
    1/ chargement au lancement de l'appli -> stringlist
    2/ a chaque ouverture de fenêtre ayant cette CBox:
    - count des références
    - comparaison avec le nb d'items de la stringlist
    - si <> rechargement de la stringlist
    - alimentation de la cbox depuis la stringlist

    Ca revient à ne charger que si nécessaire.

    le count des références peut faire l'objet d'une PS si le SGBD le supporte (perf ++)

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Oui ça peut sembler pas mal mais les ajout de produits sont courant mais pas tant que ça. par contre les mise à jours de produits existants sont très régulière (genre stock !) puisque plusieurs personnes travaillent sur la base même temps...

    Donc le count ne "verfra" pas les changements

  9. #9
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 306
    Points
    2 306
    Par défaut
    bonjour,

    tu utilise quoi comme BDD ?

    N'importe comment, tu devrais (à mon avis hein) réfléchir à un moyen de ne pas tout charger (si ce sont des données qui peuvent évoluer régulièrement). Tu as 90000 tuples, je ne pense pas que le vendeur parcours le combo sur les 90000 références pour trouver son article. Tu y gagnerai surement en revoyant un peu l'ergonomie. Perso j'aurai pas mis de combo, le gars aurait saisit le début (ou rien) et qu sortir de la zone, j'aurais affiché les résultats correspondant à sa demande dans une grille (en paginant si il y a beaucoup de réponses).

    @++
    Dany

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    J'utilise une base firebird...

    C'est plus ou moins ce que je m'escrime à faire... J'arrive un peu trop tard, le composant est déjà créé et utilisé depuis 6 mois alors c'est pas facile de passer d'une combo ou les données sont référencées par leurs position dans un tableau à une grille ou les données sont référencée par leur clef primaire. Changement de type et de philosphie...

    J'ai plus ou moins les mains liées sur l'interface plublique... Le comosant est énorme et je patauge dans le code écrit par un autre. Galère !

    En tout cas merci de votre aide... :-)

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/05/2005, 12h59
  2. requete sql sur un grand nombre d enregistrement
    Par marielaure dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2004, 11h53
  3. Nombre de tuples apres requete
    Par afan dans le forum MFC
    Réponses: 4
    Dernier message: 19/03/2004, 12h02
  4. Traitement d'un grand nombre de champ
    Par k-lendos dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/03/2004, 15h13
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 12h07

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