2011-12-29 4 views
1

Quelle est la meilleure façon d'appeler une procédure stockée et d'avoir un temps de réponse très faible dans asp.net? J'ai essayé de remplir un ensemble de données à partir d'un adaptateur:Optimisation au niveau de l'application

 SqlConnection conn = new SqlConnection(dbm.ConnectionString); 
     SqlCommand sqlcom = conn.CreateCommand(); 

     sqlcom.CommandType = CommandType.StoredProcedure; 
     sqlcom.CommandText = ""; 
     sqlcom.Parameters.Add(new SqlParameter("@SOME_ID", Session[IWConstants.SessionAccountID])); 
     sqlcom.Parameters.Add(new SqlParameter("@END_DATE", "")); 
     sqlcom.Parameters.Add(new SqlParameter("@FILTER_OPTION", "")); 
     sqlcom.Parameters.Add(new SqlParameter("@START_DATE", "")); 
     SqlDataAdapter sqlDA = new SqlDataAdapter(sqlcom); 
     DataSet ds = new DataSet(); 
     sqlDA.Fill(ds); 

     csvDataTable = ds.Tables[0]; 

et ce bloc me donne plus de 11 000 milli secondes en réponse est-il une meilleure façon de le faire ??

+7

Avez-vous testé seul le temps d'exécution de la procédure stockée? Peut-être que ce n'est pas le code C# qui est le problème –

+1

Que diriez-vous d'utiliser un modèle d'entité? –

+0

nopes j'ai testé ce bloc en utilisant dottrace et l'appel sp lui-même prend 1 seconde pour répondre – Wajeeh

Répondre

1

Ce que vous avez écrit est certainement l'un des moyens les plus efficaces. Je suppose que vous définissez le CommandText au nom de votre procédure stockée.

Votre temps de réponse a probablement à faire avec la topologie du réseau ou ressources disponibles serveur SQL. (En supposant que votre sp s'exécute très rapidement lorsqu'il est testé directement sur le serveur sql.)

Consultez le deuxième tableau sur cette page http://ormeter.net/ pour voir à quel point un ORM ajoute à l'exécution si c'est ce que vous considérez comme une option.

Si vous souhaitez micro-optimiser ce qui se passe dans le code client, vous pouvez utiliser un lecteur de données au lieu de remplir un jeu de données. Cela a des frais généraux légèrement inférieurs, mais en comparaison avec l'accès à la base de données, il est généralement négligeable.

+0

Merci beaucoup, il m'a aidé j'étais dans une confusion à ce sujet. peut-être que j'ai couru les tests de performance en utilisant dottrace et il était en cours d'exécution de la référence du site dans le serveur web local qui aurait pu avoir causé le retard. Merci encore. – Wajeeh

+0

Mon plaisir. :) –

Questions connexes