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.
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. |