EmacLi
Messages postés165Date d'inscriptionjeudi 3 novembre 2005StatutMembreDernière intervention 1 février 2013
-
24 mai 2007 à 18:08
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
26 mai 2007 à 19:53
Bonjour à tous !
Je voudrais avoir votre avis :
Je dois construire une série de tableau, un tableau correspodant à un produit et qui comporte le libelle du produit, sa référence, son prix etc...
A l'heure actuel j'ai fait une premiere version avec la classe Table (controle serveur) et je trouve le chargement des pages
HYPER LONG !!!
Quelqu'un sait il pourquoi ?
J'ai donc pensé à utiliser un HTMLTable mais je voudrais avoir vos avis avant de me lancer.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 24 mai 2007 à 23:30
Salut,
Il y a grande chance que ca mettes legerement moins de temps.
Mais regardes dans un premier temps.
La requete si elle mets du temps a s'executée.
Avec le profiler ou l'analyseur si c'est sqlserveur derriere.
Ou dans le code.
Ensuite regardes si tu peux pas passer par des datagrid ou gridview et faire un binding dessus c'est peut etre plus rapide que de lire la collection et de faire le travail de remplissage a la main et 2 lignes de code suffit pour faire le remplir
datasource et databindind
Le rendu est le meme entre un htmltable et un serveur table
et si tu mets le viewstate a false, tu gagneras du temps aussi je pense.
Car le view state est additionnee au autre controle pour un tableau serveur.
Tout d'abord je tenais à te remercier pour ton aide !
Mon problème viens bien de mes requêtes je viens de vérifier.
Je suis en traint d'obtimiser tout ça, je viens déja de gagner deux secondes de chargement !
J'ai testé la propriété EnabledViewState à false mais le temps était quasiment identique.
EmacLi
Messages postés165Date d'inscriptionjeudi 3 novembre 2005StatutMembreDernière intervention 1 février 20131 26 mai 2007 à 11:25
Il n'y a pas qu'une requête en faite !
J'ai une manière trés particulière de coder, j'te montre quand même ma requête principal :
Sont but et de me retourner tout les groupes (produits) de la catégorie en cours
public List<Groupe> GetGroupes()
{
List<Groupe> lg = new List<Groupe>();
if (this.Identifiant != 0)
{ DbDataAdapter dda Db.CreateAdapter("SELECT G.*, Ga.*, M.* FROM Groupes G, Appartenir A, Gammes Ga, Marques M WHERE G.Grp_Id A.Apt_Grp_Id AND Ga.Gam_Id = G.Grp_Gam_Id AND M.Mar_Id = G.Grp_Mar_Id AND A.Apt_Cat_Id = @categorie;", BgWeb.Connexion);
Db.AddParameter(dda.SelectCommand, "@categorie", this.Identifiant, MyaDbType.Int32);
DataTable dt = new DataTable();
Db.Fill(dda, dt);
foreach (DataRow drEnCours in dt.Rows)
{
Groupe gEnCours = new Groupe(drEnCours);
gEnCours.Gamme = new Gamme(drEnCours);
gEnCours.Marque = new Marque(drEnCours);
lg.Add(gEnCours);
}
}
return lg;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 26 mai 2007 à 15:41
Ok
Deja ta requete sera plus rapide si tu n'utilisait pas la notation *
Mais que les champs nécessaires a remplir les collections
ensuite
si tu mettrais des inner join
avec la place de FROM TABLE1, TABLE2, TABLE3
ca irait plus vite
SELECT G.champ1, Ga.champ2, M.champ3 .......
FROM Groupes G
INNER JOIN Appartenir A on
G.Grp_Id = A.Apt_Grp_Id
INNER JOIN Gammes Ga on
Ga.Gam_Id = G.Grp_Gam_Id
INNER JOIN Marques M on
M.Mar_Id = G.Grp_Mar_Id
WHERE A.Apt_Cat_Id =
@categorie;
Apres dis moi ca va plus vite sutout les inner join?
Normalement oui car les inner join sont un genre de filtre
Alors que le where est un produit cartesien
exemple TABLE1 N enregitrements et TABLE2 M enregistrements et TABLE 3 S enregistrements
--> N*M*S Lignes
Puis apres filtre avec la conditions du where
les filtres sont en revacnhe appliqué directement au fur a mesure avec les inner join
Sinon en passant par une procédure stockée ca accèlere aussi car la procédure stockée sont plus facile pour le sgbd a optimiser.
Et son plus pres du moteur de données.