KB4051361 - Tối ưu hóa thông tin mục tiêu hàng trong kế hoạch thực thi truy vấn được bổ sung SQL Server năm 2014, 2016 và 2017

Áp dụng cho
SQL Server 2016 Standard - 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 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core 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)

Tóm tắt

Thêm thuộc tính kế hoạch thực thi truy vấn EstimateRowsWithoutRowGoal mới vào SQL Server 2017 Bản cập nhật Tích lũy 3 (CU3) và Microsoft SQL Server 2016 Gói Dịch vụ 2 (SP2).

Khi Trình tối ưu hóa truy vấn ước tính chi phí của kế hoạch thực thi truy vấn, trình tối ưu hóa truy vấn thường giả định rằng tất cả các hàng đủ điều kiện từ tất cả các nguồn đều phải được xử lý. Tuy nhiên, một số truy vấn khiến trình tối ưu hóa truy vấn tìm kiếm gói sẽ trả về số hàng nhỏ hơn nhanh hơn. Điều này có thể xảy ra nếu truy vấn sử dụng mệnh đề TOP , gợi ý truy vấn FAST number_rows , mệnh đề IN hoặc EXISTS hoặc câu lệnh SET ROWCOUNT { number | @number\_var } . Trong trường hợp này, trình tối ưu hóa đang sử dụng mục tiêu hàng khi ước tính kế hoạch truy vấn. Nếu kế hoạch mục tiêu hàng được áp dụng, số hàng ước tính trong kế hoạch thực thi truy vấn sẽ bị giảm. Điều này là do kế hoạch giả định rằng một số hàng nhỏ hơn sẽ phải được xử lý để đạt được mục tiêu hàng.

Lưu ý Ước tính được thực hiện bằng cách sử dụng mục tiêu hàng là gần đúng. Nếu phân bố dữ liệu thực tế không thống nhất, nó có thể nhỏ hơn số hàng thực tế phải được xử lý. Vì vậy, nó có thể tạo ra một kế hoạch truy vấn không hiệu quả. Giải pháp thay thế cho sự cố này là bạn có thể sử dụng tùy chọn truy vấn USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') hoặc Theo dõi Cờ 4138.

Để biết thêm thông tin, hãy xem Cập nhật giới thiệu tham đối gợi ý truy vấn USE HINT SQL Server 2016. Tuy nhiên, việc xác định các truy vấn phức tạp có được áp dụng mục tiêu hàng hay không và mức độ ảnh hưởng đến lựa chọn gói.

Bằng cách sử dụng thuộc tính EstimateRowsWithoutRowGoal , bạn có thể so sánh kết quả với kết quả của thuộc tính EstimateRows để xem mục tiêu hàng ảnh hưởng đến ước tính của Trình tối ưu hóa Truy vấn như thế nào.

Lưu ý Nếu mục tiêu hàng không được áp dụng cho một toán tử kế hoạch truy vấn cụ thể, thuộc tính này không được bao gồm.

Xem thêm thông tin

Bản cập nhật này được bao gồm trong bản cập nhật tích lũy sau đây dành SQL Server:

Bản cập nhật Tích lũy 3 cho SQL Server 2017

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

Mỗi bản cập nhật tích lũy mới dành cho SQL Server sẽ chứa tất cả các bản cập nhật nóng và tất cả các bản sửa lỗi bảo mật được bao gồm 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 dành cho doanh SQL Server:

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

Thông tin gói dịch vụ dành cho người SQL Server

Bản cập nhật này được giới thiệu trong các gói dịch vụ sau đây dành SQL Server:

Gói Dịch vụ 2 cho SQL Server 2016

Gói Dịch vụ 3 cho SQL Server 2014

Giới thiệu về các gói dịch vụ dành SQL Server:

Các gói dịch vụ được tích lũy. Mỗi gói dịch vụ mới đều chứa tất cả các bản sửa lỗi trong các gói dịch vụ trước đó, cùng với mọi bản sửa lỗi 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 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 để tìm 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 phiên bản, phiên bản và cấp độ cập nhật của bản cập nhật SQL Server phần của nó

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.