KB4023419 - KHẮC PHỤC: Truy vấn chứa UNION ALL và mục tiêu hàng có thể chạy chậm hơn trong SQL Server 2014 hoặc các phiên bản mới hơn khi so sánh với SQL Server 2008 R2

Áp dụng cho
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

Triệu chứng

Khi bạn truy vấn dạng xem trong Microsoft SQL Server 2014 hoặc 2016, có thể mất nhiều thời gian hơn để hoàn thành nếu bạn so sánh dạng xem này với cách thực thi trong SQL Server 2008 R2.

Khi bạn thực thi truy vấn sử dụng UNION ALL và mục tiêu hàng (như mệnh đề TOP N, FAST N hoặc vị từ EXISTS), bạn có thể nhận thấy rằng truy vấn chạy chậm hơn trong SQL Server 2014 hoặc các phiên bản mới hơn nếu bạn so sánh truy vấn này với SQL Server 2008 R2.

Nguyên nhân

Trong SQL Server 2008 R2, Trình tối ưu hóa truy vấn thay đổi thứ tự của các phần khác nhau trong UNION ALL nếu có lúc mục tiêu của hàng, sao cho phần rẻ nhất được đặt lên trước. Điều này cho phép truy vấn hoàn tất thực thi sớm hơn nếu các phần rẻ hơn tạo ra số hàng cần thiết mà không tiếp tục thực thi các phần đắt tiền hơn. Việc sắp xếp lại như vậy không xảy ra trong các phiên bản mới hơn của SQL Server.

Giải pháp

Sự cố này đã được khắc phục trong bản cập nhật tích lũy sau đây dành cho SQL Server:

Bản cập nhật tích lũy 7 cho SQL Server 2016 RTM

Bản cập nhật tích lũy 4 cho SQL Server 2016 SP1

Bản cập nhật tích lũy 6 cho SQL Server 2014 SP2

Lưu ý Trình tối ưu hóa truy vấn phải được kích hoạt cho sự cố này.

Để biết thêm thông tin về trình tối ưu hóa truy vấn và cờ theo dõi, hãy tham khảo các liên kết sau:

Mô hình dịch vụ hotfix TF 4199 của Trình tối ưu hóa truy vấn SQL Server

Lệnh bảng điều khiển DBCC và cờ Theo dõi

Giới thiệu về các bản cập nhật tích lũy cho SQL Server:

Mỗi bản cập nhật tích lũy mới dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Xem các bản cập nhật tích lũy mới nhất cho SQL Server:

Bản cập nhật tích lũy mới nhất cho SQL Server 2016

Bản cập nhật tích lũy mới nhất cho SQL Server 2014

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".

Tham khảo

Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.