Sau khi tìm kiếm một lúc, tôi quyết định đăng câu hỏi này vì không tìm được câu trả lời và xin lỗi nếu có câu hỏi / câu trả lời tương tự ngoài kia.
Khi chạy truy vấn bên dưới trên hai máy chủ SQL được thiết lập tương tự nhau, chúng tôi gặp phải các kế hoạch thực hiện khác nhau ảnh hưởng đến hiệu suất và chúng tôi cần trợ giúp để tìm ra nguyên nhân.
Truy vấn:
SELECT process_id
INTO #temp
FROM revrep_revenue_fact
WHERE process_id = 284
DROP TABLE #temp
Kế hoạch thực hiện của máy chủ A
Kế hoạch thực hiện của máy chủ B Máy chủ B http://s2.postimg.org/z9fjrfv4n/server_B.png
Bạn sẽ nhận thấy rằng máy chủ B có hoạt động vật lý HÀNG ĐẦU trong kế hoạch thực hiện thực tế và chúng tôi đang cố gắng tìm hiểu tại sao. Cả hai truy vấn đều sử dụng cùng một chỉ mục trong Tìm kiếm chỉ mục.
Dưới đây là một số chi tiết về máy chủ A và máy chủ B
Máy chủ A và B đều
Gói dịch vụ tiêu chuẩn Windows Server 2008 R2 1
RAM 24GB
Hệ điều hành 64 bit
Các phiên bản SQL Server 2012 có được bằng cách sử dụng ( CHỌN SERVERPROPERTY ('ProductVersion') )
Máy chủ A phiên bản SQL 11.0.3000.0
Máy chủ B SQL phiên bản 11.0.5058.0
Những gì chúng tôi đã cố gắng
Tại sao máy chủ B có TOP trong kế hoạch thực hiện? Trong ví dụ truy vấn đơn giản này không có vấn đề thực sự nhưng trong một truy vấn lớn hơn, chi phí tăng lên cho TOP và chúng ta thấy một hiệu suất đạt được. Bất kỳ trợ giúp gỡ lỗi này sẽ được đánh giá cao và chúng tôi có thể giúp bạn có thêm thông tin bạn cần để giúp đỡ.
GO
dòng sau hàng đếm. Bạn cũng có thể đăng các thuộc tính của toán tử hàng đầu?
TOP
nhà điều hành cho một tổ chức phi zeroSET ROWCOUNT
trước đây được thực hiện trên kết nối đó. Hãy thử lại với sau khi thực hiệnSET ROWCOUNT 0;
. Ngoài ra, các phiên bản SQL bạn đã đăng không phải là SQL 2008 R2. ChạySELECT SERVERPROPERTY('ProductVersion');
trên 2 máy chủ để có phiên bản SQL Server thực tế.