Chargement trop long

Résolu
cs_nanaou Messages postés 30 Date d'inscription lundi 4 septembre 2006 Statut Membre Dernière intervention 21 mars 2010 - 18 août 2007 à 12:21
jeanajaccio Messages postés 39 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 29 août 2007 - 29 août 2007 à 09:54
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2007 à 18:09
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 !
3
jeanajaccio Messages postés 39 Date d'inscription jeudi 23 janvier 2003 Statut Membre Dernière intervention 29 août 2007
29 août 2007 à 09:54
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
3
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
18 août 2007 à 12:26
Thread ?

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
cs_nanaou Messages postés 30 Date d'inscription lundi 4 septembre 2006 Statut Membre Dernière intervention 21 mars 2010
18 août 2007 à 12:33
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
18 août 2007 à 12:35
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"
0
cs_nanaou Messages postés 30 Date d'inscription lundi 4 septembre 2006 Statut Membre Dernière intervention 21 mars 2010
18 août 2007 à 12:43
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.
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
18 août 2007 à 12:45
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"
0
cs_nanaou Messages postés 30 Date d'inscription lundi 4 septembre 2006 Statut Membre Dernière intervention 21 mars 2010
18 août 2007 à 12:50
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?
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
18 août 2007 à 12:51
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"
0
cs_nanaou Messages postés 30 Date d'inscription lundi 4 septembre 2006 Statut Membre Dernière intervention 21 mars 2010
18 août 2007 à 12:57
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.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2007 à 17:08
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 !
0
cs_nanaou Messages postés 30 Date d'inscription lundi 4 septembre 2006 Statut Membre Dernière intervention 21 mars 2010
18 août 2007 à 17:43
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...
0
cs_nanaou Messages postés 30 Date d'inscription lundi 4 septembre 2006 Statut Membre Dernière intervention 21 mars 2010
18 août 2007 à 18:52
Ok merci, je vais essayer.
0
Rejoignez-nous