Tôi có một dịch vụ web, do đó, trình xử lý được gọi nhiều lần đồng thời tất cả thời gian.hiệu suất kém với sqlparameter
Bên trong tôi tạo SqlConnection và SqlCommand. Tôi phải thực hiện khoảng 7 lệnh khác nhau. lệnh khác nhau đòi hỏi các thông số khác nhau, vì vậy tôi chỉ cần thêm chúng một lần:
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));
Sau đó, trong quá trình thực tôi chỉ cần thay đổi CommandText prorerty và sau đó gọi ExecuteNonQuery(); hoặc ExecuteScalar();
Và tôi gặp vấn đề về hiệu suất. Ví dụ: các chương trình gỡ lỗi và lược tả nhỏ, lệnh đó
command.CommandText = "SELECT LastShowTS FROM LogForAllTime WHERE UserID = @UserID";
mất khoảng 50ms trong avarage. Nếu tôi thay đổi nó thành:
command.CommandText = "SELECT LastShowTS FROM LogForAllTime WHERE UserID = '" + userID.Replace("\'", "") + "'";
thì chỉ mất 1ms trong avarage!
Tôi không thể tìm được đầu mối để điều tra sự cố.
Bạn có thể nêu rõ: loại 'userID' được định nghĩa trong C# là gì và loại xác định của cột' UserID' trong cơ sở dữ liệu là gì? –
Bạn có chắc đây là nút cổ chai hiệu suất của bạn không? Bạn đã lược tả mọi thứ chưa? – asawyer
userID là một chuỗi, trong DB nó là varchar (20) và là một PK –