Tôi có 2 thủ tục được lưu trữ, trong đó thủ tục lưu trữ thứ hai là một cải tiến của quy trình đầu tiên.
Tôi đang cố gắng đo lường chính xác mức độ cải thiện.
1 / Đo lường clock time
dường như không phải là một lựa chọn vì tôi có thời gian thực hiện khác nhau. Thậm chí tệ hơn, đôi khi (hiếm khi, nhưng nó xảy ra) thời gian thực hiện của thủ tục được lưu trữ thứ hai lớn hơn thời gian thực hiện của thủ tục đầu tiên (tôi đoán do khối lượng công việc của máy chủ tại thời điểm đó).
2 / Include client statistics
cũng cung cấp kết quả khác nhau.
3 / DBCC DROPCLEANBUFFERS
, DBCC FREEPROCCACHE
là tốt, nhưng cùng một câu chuyện ...
4 / SET STATISTICS IO ON
có thể là một tùy chọn, nhưng làm thế nào tôi có thể đạt được điểm tổng thể vì tôi có nhiều bảng liên quan đến các thủ tục được lưu trữ của mình?
5 / Include actual execution plan
cũng có thể là một lựa chọn. Tôi nhận được estimated subtreecost
0,3253 cho thủ tục được lưu trữ đầu tiên và 0,3079 cho quy trình thứ hai. Tôi có thể nói thủ tục lưu trữ thứ hai nhanh hơn 6% (= 0,3253 / 0,3079) không?
6 / Sử dụng trường "Đọc" từ SQL Server Profiler?
Vậy làm thế nào tôi có thể nói rằng thủ tục được lưu trữ thứ hai nhanh hơn x% so với thủ tục đầu tiên, bất kể điều kiện thực hiện (khối lượng công việc của máy chủ, máy chủ nơi các thủ tục được lưu trữ này được thực thi, v.v.)?
Nếu không thể, làm thế nào tôi có thể chứng minh thủ tục được lưu trữ thứ hai có thời gian thực hiện tốt hơn thủ tục được lưu trữ đầu tiên?