Podsumowanie
Dodanie nowego atrybutu planu wykonywania zapytania EstimateRowsWithoutRowGoal do aktualizacji skumulowanej 3 (CU3) SQL Server 2017 i dodatku Service Pack 2 (SP2) dla programu Microsoft SQL Server 2016.
Optymalizator zapytań, szacując koszt planu wykonywania zapytań, zwykle zakłada, że muszą zostać przetworzone wszystkie kwalifikujące się wiersze ze wszystkich źródeł. Jednak niektóre zapytania powodują, że optymalizator zapytań wyszukuje plan, który szybciej zwróci mniejszą liczbę wierszy. Może się tak zdarzyć, jeśli w zapytaniu użyto klauzuli TOP , wskazówki dotyczącej zapytania FAST number_rows , klauzuli IN lub EXISTS albo instrukcji SET ROWCOUNT { number | @number\_var } . W takim przypadku optymalizator szacuje plan zapytania na podstawie celu wiersza. W przypadku zastosowania planu celu wierszy szacowana liczba wierszy w planie wykonywania zapytania zostanie zmniejszona. Jest to spowodowane założeniem, że w planie założono, że do osiągnięcia docelowego wiersza trzeba będzie przetworzyć mniejszą liczbę wierszy.
Wskazówka Oszacowanie dokonane przy użyciu celu wiersza jest przybliżone. Jeśli rzeczywisty rozkład danych jest niejednorodny, może być mniejszy niż rzeczywista liczba wierszy, które muszą zostać przetworzone. W związku z tym może utworzyć nieefektywny plan kwerendy. Aby obejść ten problem, możesz użyć opcji zapytania USE HINT ("DISABLE_OPTIMIZER_ROWGOAL") lub flagi śledzenia 4138.
Aby uzyskać więcej informacji, zobacz Aktualizacja wprowadza argument wskazówki dotyczącej zapytania USE HINT w programie SQL Server 2016. Jednak w złożonych zapytaniach może być trudno określić, czy cel wiersza jest stosowany i jak bardzo wpływa on na wybór planu.
Za pomocą atrybutu EstimateRowsWithoutRowGoal można porównać wyniki z wynikami atrybutu EstimateRows , aby zobaczyć, jak bardzo cel wiersza wpływa na oszacowania optymalizatora zapytań.
Wskazówka Jeśli cel wiersza nie jest stosowany do konkretnego operatora planu kwerendy, ten atrybut nie jest uwzględniany.
Więcej informacji
Ta aktualizacja jest częścią następującej aktualizacji zbiorczej dla programu SQL Server:
Aktualizacja zbiorcza 3 dla programu SQL Server 2017
Informacje o aktualizacjach zbiorczych programu SQL Server:
Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:
Najnowsza aktualizacja zbiorcza dla programu SQL Server 2017
Informacje o dodatku Service Pack dla programu SQL Server
Ta aktualizacja jest wprowadzona w następujących dodatkach Service Pack dla programu SQL Server:
Service Pack 2 dla programu SQL Server 2016
Service Pack 3 dla programu SQL Server 2014
Informacje o dodatkach Service Pack dla programu SQL Server:
Dodatki Service Pack są kumulatywne. Każdy nowy dodatek Service Pack zawiera wszystkie poprawki zawarte w poprzednich dodatkach Service Pack oraz nowe poprawki. Zalecamy stosowanie najnowszego dodatku Service Pack i najnowszej aktualizacji zbiorczej dla danego dodatku Service Pack. Instalowanie poprzedniego dodatku Service Pack przed zainstalowaniem najnowszego dodatku Service Pack nie jest konieczne. Więcej informacji na temat najnowszego dodatku Service Pack i najnowszej aktualizacji zbiorczej znajdziesz w tabeli 1 w następującym artykule.
Jak określić wersję, wersję i poziom aktualizacji programu SQL Server i jego składników
Źródła informacji
Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.