none
requete avec comme resultat un tableau pour chaque ligne. besoin d'optimisation RRS feed

  • Question

  • bonjour à tous,

    ma question va peut etre vous paraitre facile ?? mais bon Smile

     

    J'utilise VS2005 et Sql Server 2005. j'ai deux tables A et B. pour chaque ligne de la table A correspondes plusieurs lignes de la table B.

     

    le probleme que j ai c'est la lenteur : je fais une requete pour recuperer les lignes de la table A suivant des criteres de recherches. Puis pour chaque ligne (de la table A) je fais une requete pour recuperer la liste des lignes B correspondantes. ce qui prend pas mal de temps. (bien sur tout est bien indexé)

     

    du type:

     

    requete sql -> recuperation du datareader dans une liste List<MaClasse>

     

    foreach( MaClasse ...)

    {

        une requete Sql avec parametres (Id de la ligne A)

    }

     

    Ma question est la suivante:

    comment je peut faire (utilisation de requetes, procedures stockees, assemblies...etc) pour optimiser au maximum mon temps de reponse ?

     

    Merci d'avance
    dimanche 24 juin 2007 21:33

Réponses

  • Pour remplir une table A suivant un critère, et une table B attaché aux résultat de A il faut faire uniquement que 2 requêtes :

     

    Code Snippet

    //Remplir le DataTable A avec la condition sur A

    //SELECT * FROM A WHERE Condition

     

    //Faire une jointure entre A et B avec la condition sur A

    //SELECT B.* FROM A, B WHERE Condition AND A.IdentifiantUnique = B.IdentifiantUnique

     

    Ainsi vous faites uniquement 2 requêtes... Le gain de performance est garanti, même si la 2ème requête renvoie beaucoup de lignes d'un coup !

     

    Cordialement

    lundi 25 juin 2007 07:47
    Modérateur

Toutes les réponses

  • Pour remplir une table A suivant un critère, et une table B attaché aux résultat de A il faut faire uniquement que 2 requêtes :

     

    Code Snippet

    //Remplir le DataTable A avec la condition sur A

    //SELECT * FROM A WHERE Condition

     

    //Faire une jointure entre A et B avec la condition sur A

    //SELECT B.* FROM A, B WHERE Condition AND A.IdentifiantUnique = B.IdentifiantUnique

     

    Ainsi vous faites uniquement 2 requêtes... Le gain de performance est garanti, même si la 2ème requête renvoie beaucoup de lignes d'un coup !

     

    Cordialement

    lundi 25 juin 2007 07:47
    Modérateur
  • Effectivement ça marche Smile

    Merci

    lundi 25 juin 2007 09:30