cs_nanaou
Messages postés30Date d'inscriptionlundi 4 septembre 2006StatutMembreDernière intervention21 mars 2010
-
18 août 2007 à 12:21
jeanajaccio
Messages postés39Date d'inscriptionjeudi 23 janvier 2003StatutMembreDernière intervention29 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?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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 !
cs_nanaou
Messages postés30Date d'inscriptionlundi 4 septembre 2006StatutMembreDernière intervention21 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_nanaou
Messages postés30Date d'inscriptionlundi 4 septembre 2006StatutMembreDernière intervention21 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.
cs_nanaou
Messages postés30Date d'inscriptionlundi 4 septembre 2006StatutMembreDernière intervention21 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.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 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 !
cs_nanaou
Messages postés30Date d'inscriptionlundi 4 septembre 2006StatutMembreDernière intervention21 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...