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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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.