Chargement trop long [Résolu]

Signaler
Messages postés
30
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
21 mars 2010
-
Messages postés
39
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
29 août 2007
-
Bonjour,
j'utilise une table contenant les codes postaux de France, ainsi que leurs villes associées.
La table contient environ 130 000 villes différentes. Ainsi le temps de récupération des différentes villes avec java.sql pour les insérer dans une JComboBox (liste déroulante) est extremement long : environ 4 minutes.
Que puis-je faire pour améliorer considérablement le temps de chargement?

13 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
111
Et oui, mais un système d'autocomplétion devrait se baser sur des requêtes SQL plutôt que sur une recherche dans un combo : ce serait plus rapide, et moins coûteux en ressource !
Messages postés
39
Date d'inscription
jeudi 23 janvier 2003
Statut
Membre
Dernière intervention
29 août 2007

D'accord avec Darksidious, essayes d'intégrer un filtre région->dpt->ville/cp par requêtes sql, tu auras de meilleures perf
JeanSoft
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
15
Thread ?

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
30
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
21 mars 2010

Le problème avec un thread serait que la JComboBox ne serait pas utilisable tant que le chargement du thread soit fini. Il faudrait tout de meme attendre les 4 minutes. Enfin il me semble.
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
15
pas forcement , tu ajoutes , tu refresh
enfin je sais pas trop , j'ai pas de quoi faire de teste lol

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrirTom"
Messages postés
30
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
21 mars 2010

Je crée un vecteur en static afin que ça ne prenne pas 4 minutes à chaque fois (Une seule récupération dans la base de données au moment du chargement du formulaire).
j'ajoute ensuite les données à la JComboBox lorsqu'on "clique dessus" (ceci ne prend pas de temps).
C'est juste l'accès à la bdd qui est très long.
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
15
ouaip ok
au pire tu peux faire une barre de chargement

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
30
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
21 mars 2010

Est-il possible de sauvegarder mon vecteur sur le disque. Et pour chaque redémarrage de cette application récupérer l'objet enregistré sur le disque?
Messages postés
2448
Date d'inscription
samedi 21 février 2004
Statut
Modérateur
Dernière intervention
29 janvier 2010
15
ben oui
pourquoi pas ? mais je suis pas sur que ca sois beaucoup plus rapide et dans ce cas la tu perd l'utilite d'une base de donnee il me semble

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Messages postés
30
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
21 mars 2010

Si je ne trouve pas d'autres solutions j'essairai comme cela. D'autant plus que la bdd ne devrait pas changer, normalement elle est complète.
En tous cas, merci pour ton aide.
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
111
heu... une question tout de même : quel est l'intérêt d'avoir un combo contenant 130 000 Codes-postaux ??? Tu crois vraiment que l'utilisateur va se taper le défillement de tout ca pour sélectionner un code-postal ? (en tout cas, moi j'en aurais pas le courage !!!).

Essaye de revoir l'architecture de ton application, du style : l'utilisateur sélectionne d'abord son département, et ca lui affiche un combo des codes-postaux de ce département, ou autre chose...

Et à mon avis, ce n'est pas l'accès à la base de données qui est lent, mais la lecture des données qu'elle te renvoie (ce n'est pas la même chose !). Une base de données est optimisée pour faire des requêtes sur les données, pas pour renvoyer des centaines de miliers d'enregistrement d'un coup !
Messages postés
30
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
21 mars 2010

Effectivement c'est la lecture des données qui est lente : c'est sur le ResultSet.next()...

Cependant l'intérêt de tout avoir dans la JComboBox est qu'il y a un système d'auto-complétion : par exemple, si on tappe "ly", lyon se complète automatiquement et les codes postaux s'y référant s'affichent. Ce qui est très intéressant lors de la saisie des coordonnées d'un client ou de l'adresse de livraison, etc... rapidité, productivité oblige...
Messages postés
30
Date d'inscription
lundi 4 septembre 2006
Statut
Membre
Dernière intervention
21 mars 2010

Ok merci, je vais essayer.