cs_Tolliap
Messages postés60Date d'inscriptionlundi 4 décembre 2006StatutMembreDernière intervention11 janvier 2013
-
9 févr. 2009 à 17:57
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
13 févr. 2009 à 16:21
Bonjour,
Je possède une base de données SQL SERVER, avec une table "Personne".
A l'intérieure de cette table il y a environ plus de 10 000 Ligne de personnes.
Au début je suis partie pour remplir un DataSet avec un SqlDataAdapter, mais le probleme c'est que sa prend beaucoup de mémoire même une fois détruit...
J'entend partout sur les forum divers qu'il vaut mieux utilisé des List<> plutôt que des DataSet... ok, essayons.
Mon probleme est le suivant, comment on peut remplir une List rapidement comme le SqlDataAdapter pour le DataSet?
Il y a t'il une solution rapide, ou faut il faire une foreach sur le DataReader et ajouter à la main...
Merci de m'indiqué (ou morienté) vers une solution rapide et qui prend moin de mémoire qu'un DataSet une fois Détruit.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 10 févr. 2009 à 10:18
Salut.
Le plus rapide, c'est encore de ne pas gérer tes 10 000 entrées à chaque fois. Je doute que tu cherches à toutes les afficher en même temps (si c'est pour les afficher, tu ferais au moins une pagination). Donc je serais toi, je regarderais d'abord quels sont les entrées dont du as réellement besoin.
Et si cependant tu as besoin de faire du traitement sur chaque entrée, pourquoi les mettre dans une liste ou un dataset ? Un while(reader.Read()) sur un SqlDataReader est clairement plus simple et tu y gagneras vachement en mémoire.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 13 févr. 2009 à 16:21
Tordu, c'est clair, mais pas infaisable.
Il "suffit" grosso-modo de trier à l'envers, de prendre le TOP (nbtotal + 1 - premier à prendre), puis de retrier dans le bon sens et prendre le TOP (nb à prendre). Enfin, j'avoue, c'est pas l'éclate, mais je pense que c'est quand même plus rapide que de traiter les 10000 enregistrement ensembles (surtout si tu fais une procédure stockée).
Genre mes enregistrements : 1 2 3 4 5 6 7 8 9. (9 éléments) Je veux du 2ème au 4ème
1) Tri à l'envers : 9 8 7 6 5 4 3 2 1
2) Top (9+1-2) : 9 8 7 6 5 4 3 2
3) Tri à l'endroit : 2 3 4 5 6 7 8 9
4) Top (4+1-2) : 2 3 4