OVH Cloud OVH Cloud

Dataset et beaucoup d'enregistrements

1 réponse
Avatar
Mikado
Salut à tous,

Je veux afficher dans une application le contenu d'une table disponible sur
le net et qui contient environ 300 000 enregistrements. Ce résultat doit
être scindé en page j'ai donc pensé à utiliser une surcharge de la méthode
Fill qui propose de récupérér n enregistrement à partir de la ligne y.
Seulement j'ai l'impression que le dataadater récupère les 300 000
enregistrements et fournit seulement ceux que je demande via Fill au
dataset. Donc c'est pas gérable. Une seconde solution de faire une procédure
stocké du genre SELECT TOP nbenregistrement * FROM matable NOT IN (SELECT
TOP nblignesaignorer FROM matable) mais là encore bonjour les ressources
utilisés... donc question, que dois-je faire ?

jérôme

1 réponse

Avatar
Zoury
Salut Mikado ! :O)

Seulement j'ai l'impression que le dataadater récupère les 300 000
enregistrements et fournit seulement ceux que je demande via Fill au
dataset.



c'est en plein ce qui se produit.. :O)
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconpagingthroughqueryresult.asp

Donc c'est pas gérable. Une seconde solution de faire une procédure
stocké du genre SELECT TOP nbenregistrement * FROM matable NOT IN (SELECT
TOP nblignesaignorer FROM matable) mais là encore bonjour les ressources
utilisés...



l'avantage avec ça, c'est que tu peux gérer la pagination facilement avec
deux valeurs, un nombre de ligne par page et l'index de la page (part à 1) :
SELECT TOP nb_ligne_par_page
champs1,
champs2,
champs3
FROM matable
NOT IN (SELECT TOP nb_ligne_par_page * (no_page - 1)
champs1,
champs2,
champs3 FROM matable)

c'est quand même beaucoup plus léger étant donnée que le nombre de lignes à
gérer est coupé à la source.. de plus 300 000 lignes ce n'est pas si énorme.
Combien de temps prend cette requête ?

conseil : évite l'emploi de l'étoile * dans un select. Spécifie les colonnes
désirées et ce même si tu les veux toutes. Sinon, tu laisses le système
recréer cette liste pour toi ce qui demande au moins autre une autre requête
et d'autres traitements.

--
Cordialement
Yanick
MVP pour Visual Basic