Tôi hiện đang sử dụng Microsoft Enterprise Library Data Access 5.0 để thực hiện một thủ tục được lưu trữ.Tập lệnh SQL mất nhiều thời gian để chạy
Database myDatabase = DatabaseFactory.CreateDatabase();
using (DbCommand command = myDatabase.GetStoredProcCommand("myStoredProc"))
{
//Add parameters here
using (IDataReader dataReader = myDatabase.ExecuteReader(command))
{
while (dataReader.Read())
{
}
}
}
Mọi thứ hoạt động tuy nhiên phải mất nhiều thời gian để chạy. Khi tôi bật SQL Profiler, tôi có thể thấy thủ tục lưu trữ mất khoảng 50 giây để chạy. Tuy nhiên, nếu tôi lấy các kịch bản tương tự đó từ Profiler và chạy nó bên trong SQL Management Studio, nó chỉ mất khoảng 480 mili giây để trả về tất cả các hàng.
Có ai gặp sự cố này không? Tại sao lại có sự khác biệt lớn?
có thay đổi nếu bạn xóa vòng lặp while? – JeremyWeir
tôi phải thử và xem. – madatanic
Câu hỏi này xuất hiện một vài lần một tuần trên diễn đàn SQL MSDN; nó phải là một bản sao ở đây là tốt. Tôi quên nguyên nhân chính xác, nhưng nó là một thiết lập mặc định cần phải được tinh chỉnh. –