UPDATE STATISTICS (Transact-SQL)

Aktualizuje statystyki optymalizacji zapytań wykonywanych w tabelach lub indeksowanych widokach.Domyślnie optymalizator zapytań sam aktualizuje statystyki w celu udoskonalenia planu wykonywania zapytań. Czasami efektywność wykonywania zapytań można poprawić za pomocą instrukcji UPDATE STATISTICS lub procedury składowanej sp_updatestats i aktualizować statystyki częściej niż przewiduje domyślne ustawienie.

Aktualizowanie statystyk gwarantuje, że zapytania będą kompilowane za pomocą aktualnych statystyk.Jednak aktualizowanie statystyk powoduje konieczność ponownego kompilowania zapytań.Zalecane jest, aby nie aktualizować zbyt często statystyk, ponieważ na wydajność ma wpływ zarówno ulepszenie planów wykonywania zapytań, jak i czas potrzebny na ponowne skompilowanie zapytań.Szczegóły kompromisów dotyczących wydajności są zależne od aplikacji.

Aby uzyskać więcej informacji na temat statystyk, w tym o zalecanych przypadkach stosowania instrukcji UPDATE STATISTICS, zobacz Using Statistics to Improve Query Performance.

Topic link iconKonwencje składni języka Transact-SQL

UPDATE STATISTICS table_or_indexed_view_name 
    [ 
        { 
            { index_or_statistics__name }
          | ( { index_or_statistics_name } [ ,...n ] ) 
                }
    ] 
    [    WITH 
        [ 
            [ FULLSCAN ] 
            | SAMPLE number { PERCENT | ROWS } ] 
            | RESAMPLE 
            | <update_stats_stream_option> [ ,...n ]
        ] 
        [ [ , ] [ ALL | COLUMNS | INDEX ] 
        [ [ , ] NORECOMPUTE ] 
    ] ;

<update_stats_stream_option> ::=
    [ STATS_STREAM = stats_stream ]
    [ ROWCOUNT = numeric_constant ]
    [ PAGECOUNT = numeric contant ]

Argumenty

  • table_or_indexed_view_name
    Nazwa tabeli lub indeksowanego widoku, dla którego mają być aktualizowane statystyki.

  • index_or_statistics_name
    Nazwa indeksu, dla którego będą aktualizowane statystyki, lub nazwa statystyki, która ma być aktualizowana.Jeśli parametr index_or_statistics_name nie zostanie określony, optymalizator zapytań aktualizuje wszystkie statystyki dotyczące tabeli lub indeksowanego widoku.Aktualizacja obejmie statystyki utworzone za pomocą instrukcji CREATE STATISTICS, statystyki dla pojedynczych kolumn utworzone przy włączonej opcji AUTO_CREATE_STATISTICS oraz statystyki dotyczące indeksów.

    Aby uzyskać więcej informacji na temat AUTO_CREATE_STATISTICS zobacz ALTER DATABASE SET Options (Transact-SQL). Aby wyświetlić wszystkie indeksy dla tabela lub widoku, można użyć sp_helpindex.

  • FULLSCAN
    Obliczanie statystyk przez zeskanowanie wszystkich wierszy w tabeli lub indeksowanym widoku.Opcja FULLSCAN zwraca taki sam wynik jak opcja SAMPLE 100 PERCENT.Opcji FULLSCAN nie można używać w połączeniu z opcją SAMPLE.

  • Parametr data rozpoczęcia zawiera informacje o potwierdzenie data rozpoczęcia, po utworzeniu harmonogramu.number
    Określa przybliżony odsetek lub liczbę wierszy w tabeli albo indeksowanym widoku, którą optymalizator zapytań ma brać pod uwagę przy aktualizowaniu statystyk.W przypadku opcji PERCENT wartość parametru number może się mieścić w przedziale od 0 do 100, natomiast dla opcji ROWS parametr number może wynosić od 0 do łącznej liczby wierszy.Faktyczny odsetek lub liczba wierszy analizowana przez optymalizatora zapytań może się różnić od odsetka/liczby określonej w tym miejscu.Na przykład optymalizator skanuje wszystkie wiersze znajdujące się na stronie danych.

    Wartość NULL, gdy podmiot bazy danych nie istnieje.DATABASE_PRINCIPAL_ID mogą być używane w liście select klauzulę WHERE lub dowolnym wyrażeniu jest dozwolone.

    Trwa pobieranie identyfikator bieżącego użytkownikaW poniższym przykładzie zwraca identyfikator głównej bazy danych bieżącego użytkownika.

    Zalecamy nieużywanie wartości 0 ani dla opcji PERCENT, ani ROWS.W przeciwnym razie obiekt statystyczny zostanie zaktualizowany, ale nie będzie zawierał żadnych danych statystycznych.

  • sp_defaultlanguage (języka Transact-SQL)
    Aktualizowanie wszystkich statystyk w oparciu o najnowsze zdefiniowane dla nich próbki.

    Użycie opcji RESAMPLE może spowodować przeskanowanie całej tabeli.Na przykład przy obliczaniu statystyki indeksów próbka obejmuje całą tabelę.Jeśli nie zostanie określona żadna z powyższych opcji próbkowania (SAMPLE, FULLSCAN, RESAMPLE), optymalizator zapytań oblicza wielkość próbki na podstawie domyślnych ustawień.

  • ALL | COLUMNS | INDEX
    Aktualizowanie wszystkich istniejących statystyk, statystyk tworzonych dla jednej kolumny/większej liczby kolumn lub statystyk tworzonych dla indeksów.Jeśli nie zostanie określona żadna z powyższych opcji, instrukcja UPDATE STATISTICS powoduje aktualizację wszystkich statystyk dotyczących tabeli lub indeksowanego widoku.

  • NORECOMPUTE
    Wyłączanie opcji automatycznej aktualizacji statystyk — AUTO_UPDATE_STATISTICS — dla wybranej statystyki.Jeśli opcja jest określona, optymalizator zapytań dokonuje aktualizacji statystyk, po czym wyłącza możliwość dokonywania ich w przyszłości.

    Aby ponownie włączyć opcję zachowania AUTO_UPDATE_STATISTICS, ponownie uruchom aktualizacja statystyki bez opcji NORECOMPUTE lub uruchomienia sp_autostats.

    Ostrzeżenie

    Stosowanie tej opcji może prowadzić do tworzenia nieoptymalnych planów wykonywania zapytań.Zalecamy używanie jej sporadycznie oraz tylko przez wykwalifikowanych administratorów systemów.

    Aby uzyskać więcej informacji na temat opcji AUTO_STATISTICS_UPDATE, zobacz ALTER DATABASE SET Options (Transact-SQL).Aby uzyskać więcej informacji na temat wyłączania i ponownego włączania funkcji aktualizowania statystyk, zobacz Using Statistics to Improve Query Performance.

  • <update_stats_stream_option>
    Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.

Remarks

Zwraca wartość 0, jeśli nie jest.

Dwa Using Statistics to Improve Query Performance jest odłączony, jeśli punkt przecięcia się ich Ustawia punkt jest pusta.

Aktualizowanie wszystkich statystyk za pomocą procedury składowanej sp_updatestats

Aby uzyskać informacje dotyczące sposobu aktualizowania statystyk dla wszystkich zdefiniowanych przez użytkownika i wewnętrznych tabel w bazie danych, zobacz opis procedury składowanej sp_updatestats (języka Transact-SQL).Na przykład poniższe polecenie wywołuje procedurę składowaną sp_updatestats w celu zaktualizowania wszystkich statystyk dla bazy danych.

EXEC sp_updatestats

Aby udzielić dostępu do nazwy logowania.

Aby ustalić, kiedy statystyki były aktualizowane po raz ostatni, użyj funkcji STATS_DATE.

Uprawnienia

Wymaga uprawnienia ALTER wobec tabeli lub widoku.

Przykłady

A.stała rola serwera do udostępnienia.

W poniższym przykładzie aktualizuje statystykę dla wszystkich indeksów na SalesOrderDetail Tabela.

B.Aktualizowanie statystyki indeksu

W poniższym przykładzie aktualizuje statystykę AK_SalesOrderDetail_rowguid Indeks SalesOrderDetail Tabela.

C.Aktualizowanie statystyki przy użyciu 50-procentowej próbki

Poniższy przykład tworzy i następnie aktualizuje statystykę Name i ProductNumber kolumny w Product Tabela.

D.Aktualizowanie statystyki przy użyciu opcji FULLSCAN i NORECOMPUTE

Następujące aktualizacje przykład Products Statystyka w Product Tabela, wymusza pełne skanowanie wszystkich wierszy w Product Tabela i wyłącza automatyczne statystyki Products statystyki.

Historia zmian

Microsoft Learning

Zmiany w całym dokumencie, aby zwiększyć dokładność.

Temat odnosi się do nowej zawartości statystyk w temacie Using Statistics to Improve Query Performance.