IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

ADO.NET Optimisation chargement informations


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut ADO.NET Optimisation chargement informations
    Bonjour,

    J'ai un problème d'optimisation avec une page aspx qui prend beaucoup de temps pour se charger. En fait, cette page récupère au chargement des informations dans une base de données.

    Ce que je fais est simple mais je ne sais pas si je respecte la philosophie ADO.NET

    J'ai plusieurs méthodes qui me renvoient des dataSet avec les enregistrements qui m'interessent. De la, je récupère mes Dataset et je les copie dans un dataset général. Ce grâce àla méthode Copy de l'objet DataTable.

    A la fin je me retrouve donc avec un Dataset avec plusieurs DataTable et leurs enregistrements. De la je crée des DataRelation à l'intérieur de ce Dataset général puis je lance l'affichage des informations à l'écran.

    Problème: Je viens de me rendre compte que la méthode copy de datatable prend quelques secondes lorsque mes dataset sont bien remplis. Du coup, comme ce traitement est effectué dans une boucle, les quelques secondes deviennent des minutes.

    Je ne sais pas comment faire pour optimiser tout ça! J'avais peut être pensé à passer le dataset général en référence a mes méthodes plutot que de renvoyer des dataset pour en faire des copies.

    Est ce que ma philosophie de créer un dataset général à partir d'autre dataset vous choque? Avez vous une idée pour contourner le problème du copy() de l'objet DataTable?

    Merci

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Ton départ est faux à mon avis...

    Tu devrais commencer par un DataSet typé. c'est plus simple à gérer.

    au lieu de charger toutes tes donnes en même temps charge seulement celles que tu as besoin. (tu peux charger toutes tes données en meme temps si ça se justifie mais sinon, ça ne vaut pas la peine).

  3. #3
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Justement, dans mes requêtes SQL le chargement des informations dans les Dataset "temporaire" se fait de manière quasi instantannée.

    De plus, je ne charge pas toutes les colonnes de ma table mais seulement quelques informations.

    Et je pense que l'utilisation des Datarow est très pratique et la aussi très optimisée. La preuve puisque lorsque je fais getChildRows ou un getParentRows sur mon dataSet je récupère le résultat instantanément.

  4. #4
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Problème: Je viens de me rendre compte que la méthode copy de datatable prend quelques secondes lorsque mes dataset sont bien remplis. Du coup, comme ce traitement est effectué dans une boucle, les quelques secondes deviennent des minutes.
    Montre comment tu fais ça

  5. #5
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Voila ce que je fais par exemple, il y a 5 tables que je copie dans le dataset général et 5 relations.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    ds = getTable1()
    dsSchema.Tables.Add(ds.Tables("table1").Copy())
     
    drFactLgneFact = New DataRelation("relFactLgne", dsSchema.Tables("table1").Columns("pktable1"), dsSchema.Tables("table2").Columns("fktable2"))
    drFactLgneFact.Nested = True

  6. #6
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    pourquoi tu fais un copy??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dsSchema.Tables.Add(ds.Tables("table1"))
    suffit emplement

  7. #7
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Mais si je ne me trompe pas, avec cette solution, je copie le schéma de la table mais pas les données ??? Peut être que je me trompe!

  8. #8
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    oui tu te trompes...

  9. #9
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Bonjour,

    Désolé de ne pas avoir répondu plutot mais j'étais un peu déborder.
    Je viens de tester la méthode Add mais cela ne fonctionne pas parceque ma DataTable provient d'un autre DataSet.

    Comment faire pour contourner ce problème?

Discussions similaires

  1. demande d'information sur ado.net
    Par ferhat.adel dans le forum ADO.NET
    Réponses: 3
    Dernier message: 25/11/2010, 08h44
  2. [SQLite ADO.NET Provider] Optimisation de performances
    Par Zoolive dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/07/2009, 15h25
  3. [VB.NET] [ADO.NET] DataAdapter et concaténation
    Par master56 dans le forum Accès aux données
    Réponses: 3
    Dernier message: 04/06/2004, 13h25
  4. Réponses: 5
    Dernier message: 22/12/2003, 14h18
  5. [IB v7.1][C#][ADO.NET] Démarrer avec IB 71
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 14
    Dernier message: 05/08/2003, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo