Tengo un servicio web, por lo que el controlador se llama varias veces al mismo tiempo todo el tiempo.bajo rendimiento con parámetro sql
En el interior Creo SqlConnection y SqlCommand. Tengo que ejecutar alrededor de 7 comandos diferentes. Diferentes comandos requieren varios parámetros, por lo que sólo se suman a la vez:
command.Parameters.Add(new SqlParameter("@UserID", userID));
command.Parameters.Add(new SqlParameter("@AppID", appID));
command.Parameters.Add(new SqlParameter("@SID", SIDInt));
command.Parameters.Add(new SqlParameter("@Day", timestamp.Date));
command.Parameters.Add(new SqlParameter("@TS", timestamp));
A continuación, durante la ejecución acabo de cambiar CommandText prorerty y luego llaman ExecuteNonQuery(); o ExecuteScalar();
Y me enfrento el problema de rendimiento. Por ejemplo pequeños debuggin y perfilado espectáculos, esta orden
command.CommandText = "SELECT LastShowTS FROM LogForAllTime WHERE UserID = @UserID";
toma alrededor de 50 ms en normalito. Si lo cambio a:
command.CommandText = "SELECT LastShowTS FROM LogForAllTime WHERE UserID = '" + userID.Replace("\'", "") + "'";
¡entonces solo se necesitan 1ms en avarage!
No puedo conseguir una pista sobre dónde investigar el problema.
¿Puede indicar: cuál es el tipo definido de 'userID' en C#, y cuál es el tipo definido de la columna' UserID' en la base de datos? –
¿Estás seguro de que este es tu cuello de botella de rendimiento? ¿Has perfilado todo? – asawyer
ID de usuario es una cadena, en DB es varchar (20) y es un PK –