Triệu chứng
Khi bạn đưa vào một biến số của bảng với nhiều hàng và sau đó gia nhập với các bảng khác, thì trình tối ưu truy vấn có thể chọn một gói truy vấn không hiệu quả, điều này có thể dẫn đến hiệu suất truy vấn chậm.
Giải pháp
Sau khi bạn áp dụng hotfix này, bạn có thể bật theo dõi gắn cờ 2453 để cho phép một biến bảng để kích hoạt lại khi đủ số hàng được thay đổi. Điều này có thể cho phép trình tối ưu truy vấn chọn một kế hoạch hiệu quả hơn. Vấn đề lần đầu tiên được khắc phục trong bản Cập Nhật và gói dịch vụ tích lũy sau đây cho SQL Server.
Bản Cập Nhật tích lũy 3 cho SQL Server 2014 /en-us/help/2984923
Mỗi bản Cập Nhật tích lũy mới cho SQL Server chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản Cập Nhật tích lũy trước đó. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:
Các gói dịch vụ được tích lũy. Mỗi gói dịch vụ mới chứa tất cả bản vá trong các gói dịch vụ trước đó cùng với mọi bản vá mới. Đề xuất của chúng tôi là áp dụng gói dịch vụ mới nhất và bản Cập Nhật tích lũy mới nhất cho gói dịch vụ đó. Bạn không cần phải cài đặt gói dịch vụ trước đó trước khi cài đặt gói dịch vụ mới nhất. Sử dụng bảng 1 trong bài viết sau đây để tìm hiểu thêm thông tin về gói dịch vụ mới nhất và bản Cập Nhật tích lũy mới nhất:
Cách xác định mức Phiên bản, phiên bản và Cập Nhật của SQL Server và các thành phần của nó
Thông tin Bổ sung
Khi bạn sử dụng biến đổi bảng trong một lô hoặc thủ tục, truy vấn sẽ được biên soạn và tối ưu hóa cho trạng thái trống ban đầu của bảng. Nếu biến bảng này được nhập với nhiều hàng trong thời gian chạy, thì gói truy vấn trước đã biên dịch có thể không còn tối ưu. Ví dụ, truy vấn có thể được tham gia một biến bảng với vòng lặp lồng nhau vì nó thường hiệu quả hơn với số lượng nhỏ các hàng. Gói truy vấn này có thể không hiệu quả nếu biến bảng có hàng triệu hàng. Một đường kết nối băm có thể là một lựa chọn tốt hơn trong điều kiện như vậy. Để nhận được gói truy vấn mới, nó cần được biên soạn lại. Tuy nhiên, không giống như các bảng tạm thời hoặc người dùng khác, số hàng thay đổi trong một biến bảng không kích hoạt truy vấn lại. Thông thường, bạn có thể làm việc này với tùy chọn (biên dịch lại), vốn có chi phí trên không của riêng mình. Dấu vết 2453 cho phép lợi ích của truy vấn tái biên dịch mà không có tùy chọn (biên dịch lại). Dấu vết này khác với tùy chọn (biên dịch lại) trong hai khía cạnh chính. (1) nó dùng ngưỡng cùng một số hàng như các bảng khác. Truy vấn không cần được biên dịch cho mọi tùy chọn không giống như thực hiện (biên dịch lại). Nó sẽ chỉ kích hoạt lại tính khi số hàng thay đổi vượt quá ngưỡng xác định trước. (2) tùy chọn (biên dịch lại) lực lượng truy vấn thành Peek tham số và tối ưu hóa truy vấn cho họ. Dấu vết này không có hiệu lực peeking tham số.Lưu ý cờ theo dõi này phải có mặt tại thời gian chạy. Bạn không thể dùng cờ theo dõi này với QUERYTRACEON. Cờ theo dõi này phải được dùng thận trọng vì nó có thể làm tăng số lượng truy vấn mà có thể chi phí nhiều hơn tiền tiết kiệm từ tối ưu hóa truy vấn tốt hơn.
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".