Udostępnij za pośrednictwem


CREATE STATISTICS (Transact-SQL)

Tworzy statystykę optymalizacji kwerendy, zawierającą statystykę filtrowaną, dla jednej lub wielu kolumn tabeli lub indeksowanym widoku.Dla większości kwerend optymalizator kwerendy generuje potrzebne statystyki dla planu kwerendy wysokiej jakości; w niektórych przypadkach trzeba utworzyć dodatkowe statystyki za pomocą polecenia CREATE STATISTICS lub zmodyfikować projekt kwerendy tak, by zwiększyć jej wydajność.

Statystyka filtrowana może poprawić wydajność kwerend, które wybierają z dobrze zdefiniowanych podzbiorów danych.W statystykach filtrowanych używany jest predykat filtra w klauzuli WHERE, aby wybrać podzbiór danych zawarty w statystyce.

Aby uzyskać więcej informacji o statystyce, miedzy innymi jak używać polecenia CREATE STATISTICS, zobacz Using Statistics to Improve Query Performance.

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

CREATE STATISTICS statistics_name 
ON { table_or_indexed_view_name } ( column [ ,...n ] ) 
    [ WHERE <filter_predicate> ]
    [ WITH 
        [ [ FULLSCAN 
          | SAMPLE number { PERCENT | ROWS } 
          | STATS_STREAM = stats_stream ] [ , ] ] 
        [ NORECOMPUTE ] 
    ] ;

<filter_predicate> ::= 
    <conjunct> [AND <conjunct>]

<conjunct> ::=
    <disjunct> | <comparison>

<disjunct> ::=
        column_name IN (constant ,…)

<comparison> ::=
        column_name <comparison_op> constant

<comparison_op> ::=
    IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !<

Argumenty

  • statistics_name
    Nazwa statystyki, która ma być utworzona.

  • table_or_indexed_view_name
    Nie ma żadnych wstępnie zdefiniowanych maksymalny rozmiar procedura przechowywana.Procedura przechowywana przez użytkownika mogą być tworzone tylko w bieżącej bazie danych.

  • column [ ,…n]
    Określa kolumnę klucza lub listę kolumn klucza, dla których ma być utworzona statystyka.Można podać dowolna kolumnę, która może być określona jako kolumna klucza indeksu, z następującymi wyjątkami:

    • kolumny Xml, pełnotekstowa oraz FILESTREAM nie mogą być podane..

    • Parametry są domyślnie niewymaganym.

    • Kolumny CLR zdefiniowane przez użytkownika mogą być podawane, jeśli ich typ obsługuje porządkowanie binarne.Kolumny obliczane, zdefiniowane jako wywołania metody kolumny typu zdefiniowanego przez użytkownika, mogą być podawane, jeśli metody są oznaczone jako deterministyczne.Aby uzyskać więcej informacji dotyczących tworzenia kolumn CLR typu definiowanego przez użytkownika, zobacz Working with CLR User-defined Types.

    Maksymalny dopuszczalny rozmiar połączonych wartości kolumn wynosi 900 bajtów.

  • WHERE < filter_predicate >
    Określa wyrażenie umożliwiające wybór podzbioru wierszy do uwzglednieni przy tworzeniu obiektu statystyki.Statystyki tworzone z predykatem filtra nazywamy statystykami filtrowanymi.Predykat filtra korzysta z prostej logiki porównania i nie może odwoływać się do kolumny obliczanej, kolumny UDT, kolumny z danymi typu przestrzennego lub kolumny z danymi hierarchyID.Porównania korzystające z literałów NULL są niedozwolone z operatorami porównania.Zamiast nich użyj operatorów IS NULL lub IS NOT NULL.

    Inne opcje, takie jak zestaw ARITHABORT zestaw, zestaw ANSI_WARNINGS lub ANSI_PADDINGS zestaw nie są zapisywane po utworzeniu lub zmodyfikowaniu procedura przechowywana.

    WHERE StartDate > '20000101' AND EndDate <= '20000630'

    WHERE ComponentID IN (533, 324, 753)

    WHERE StartDate IN ('20000404', '20000905') AND EndDate IS NOT NULL

    Aby uzyskać więcej informacji na temat predykaty filtru zobacz Wskazówki dotyczące projektowania indeks filtrowane.

  • 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 tworzeniu 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 kwerendy skanuje wszystkie wiersze na stronie danych.

    Wartość NULL, gdy podmiot bazy danych nie istnieje.Umożliwia to klientom indywidualne zestaw te opcje bez wpływu na logiki procedura przechowywana.

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

    Odradzamy określanie wartości 0 PERCENT lub 0 ROWS.W przypadku określenia wartości 0 PERCENT lub 0 ROWS zostanie utworzony obiekt statystyk, ale nie zawiera on danych statystycznych.

  • NORECOMPUTE
    Wyłączanie opcji aktualizacji automatycznych statystyk AUTO_STATISTICS_UPDATE, dla statistics_name.Jeśli ta opcja zostanie określona, optymalizator kwerendy zakończy żadnych aktualizacji statystyk w trakcie wykonywania statistics_name i wyłączenie przyszłych aktualizacji.

    Aby włączyć ponownie aktualizacje statysty, usuń statystyki za pomocą instrukcji DROP STATISTICS, a następnie wykonaj instrukcję CREATE STATISTICS bez opcji NORECOMPUTE.

    Ostrzeżenie

    Użycie tej opcji może powodować utworzenie gorszych niż optymalne planów kwerendy.Zalecamy, aby ta opcja była używana rzadko i tylko przez wykwalifikowanego administratora systemu.

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

  • STATS_STREAM **=**stats_stream
    Identified for informational purposes only. Not supported. Future compatibility is not guaranteed.

Remarks

Otrzymują tę samą liczbę parametrów, jak liczba parametrów procedury.

Nie mogą być konstruktora lub destruktora danej klasy.

Maximum

Liczba kolumn w jednym obiekcie statystyk

32

Dane statystyczne tworzone w indeksach

1 na indeks i 1000 na tabelę

Zwracać jego parametry odniesienie, a nie według wartości, OUTPUT jest określona dla każdej deklaracja określonego parametru.

Uzyskiwanie informacji na temat procedur przechowywanych

Kiedy korzystać z instrukcji CREATE STATISTICS

Aby uzyskać więcej informacji na temat opcji CREATE STATISTICS, zobacz Using Statistics to Improve Query Performance.

Odwołania do zależności w przypadku statystyk filtrowanych

Widok wykazu sys.sql_expression_dependencies śledzi poszczególne kolumny w predykacie statystyk filtrowanych jako zależność, do której się odwołuje.Operacje wykonywane na kolumnach tabeli należy zaplanować przed utworzeniem statystyk filtrowanych, ponieważ nie można upuścić, zmienić nazwy ani zmodyfikować definicji kolumny tabeli, która jest zdefiniowana w predykacie statystyk filtrowanych.

Uprawnienia

Odroczone rozpoznawanie nazwsysadmin stała rola serwera db_owner stałe rola bazy danych lub db_ddladmin stała rola bazy danych.

Przykłady

A.Przy tworzeniu czas, odbywa się tylko sprawdzanie składni.

Poniższy przykład tworzy ContactMail1 statystyki, za pomocą przypadkowa próbka 5 procent ContactID i EmailAddress kolumny Contact spis AdventureWorks Baza danych.

B.Tylko podczas kompilacji są wszystkie obiekty, do którego odwołuje się procedura przechowywana rozwiązane.

Poniższy przykład tworzy ContactMail2 statystyki dla wszystkich wierszy w ContactID i EmailAddress kolumny Contact Tabela i wyłącza automatyczne recomputing statystyk.

C.Wykonywanie przechowywanych procedur

Poniższy przykład tworzy filtrowane dane statystyczne ContactPromotion1. The Database Engine samples 50 percent of the data and then selects the rows with EmailPromotion equal to 2.

Historia zmian

Microsoft Learning

Podana wartość musi być stała czy zmienną.

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