Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Database w Microsoft Fabric
W tym artykule opisano sposób dodawania dołączonych (lub niekluczych) kolumn w celu rozszerzenia funkcjonalności indeksów nieklastrowanych w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL. Dołączając kolumny niekluczowe, można tworzyć indeksy nieklastrowane, które obejmują więcej zapytań. Dzieje się tak, ponieważ kolumny inne niż kluczowe mają następujące korzyści:
- Mogą to być typy danych niedozwolone jako kolumny klucza indeksu.
- Nie są one brane pod uwagę przez aparat bazy danych podczas obliczania liczby kolumn klucza indeksu lub rozmiaru klucza indeksu.
Indeks z kolumnami niekluczowymi może znacznie poprawić wydajność zapytań, gdy wszystkie kolumny w zapytaniu znajdują się w indeksie jako kolumny kluczowe lub niekluczowe. Wzrost wydajności jest osiągany, ponieważ optymalizator zapytań może zlokalizować wszystkie wartości kolumn w indeksie; Dostęp do danych tabeli lub indeksu klastrowanego nie jest uzyskiwany, co powoduje, że liczba operacji we/wy dysku jest mniejsza.
Notatka
Gdy indeks zawiera wszystkie kolumny, do których odwołuje się zapytanie, jest zwykle określane jako obejmujące zapytanie.
Zalecenia dotyczące projektowania
Przeprojektuj indeksy nieklastrowane, które mają duży rozmiar klucza indeksu, tak aby tylko kolumny używane do przeszukiwania i odwołań były kolumnami kluczowymi. Ustaw wszystkie inne kolumny, które obejmują zapytanie w kolumny inne niż kluczowe. W ten sposób będziesz mieć wszystkie kolumny potrzebne do pokrycia zapytania, ale sam klucz indeksu jest mały i wydajny.
Uwzględnij kolumny nieklastrowane w indeksie nieklastrowanym, aby uniknąć przekroczenia bieżących ograniczeń rozmiaru indeksu maksymalnie 32 kolumn kluczy i maksymalnego rozmiaru klucza indeksu wynoszącego 1700 bajtów (16 kolumn kluczy i 900 bajtów przed programem SQL Server 2016 (13.x)). Silnik bazy danych nie uwzględnia kolumn innych niż kluczowe podczas obliczania liczby kolumn klucza indeksu czy rozmiaru klucza indeksu.
Kolejność kolumn innych niżkey w definicji indeksu nie ma wpływu na wydajność zapytań korzystających z indeksu.
Unikaj bardzo szerokich indeksów nieklastrowanych, w których uwzględnione kolumny nie reprezentują wystarczająco wąskiego podzestawu kolumn tabeli bazowej. W przypadku dodawania szerokich indeksów należy zawsze sprawdzić, czy koszt aktualizacji jednego indeksu o dodatkowej szerokości równoważy koszt odczytu bezpośrednio z tabeli.
Ograniczenia i ograniczenia
Kolumny niekluczowe można definiować tylko dla indeksów nieklastrowanych.
Wszystkie typy danych z wyjątkiem tekstu, ntexti obrazu mogą być używane jako kolumny niekluczowe.
Obliczone kolumny, które są deterministyczne i precyzyjne lub nieprecyzyjne, mogą być kolumnami niekluczowymi. Aby uzyskać więcej informacji, zobacz Indeksy na obliczanych kolumnach.
Obliczone kolumny pochodzące z obrazu, ntexti tekst typów danych mogą być kolumnami niekluczowymi, o ile typ danych kolumny obliczeniowej jest dozwolony jako kolumna indeksu innego niż klucz.
Nie można usunąć kolumn nie będących kluczami z tabeli, chyba że w pierwszej kolejności zostanie usunięty indeks tej tabeli.
Nie można zmieniać kolumn nie będących kluczem, z wyjątkiem następujących czynności:
Zmień wartość null kolumny z NOT NULL na NULL.
Zwiększ długość kolumn varchar, nvarcharlub varbinary.
Bezpieczeństwo
Uprawnienia
Wymaga uprawnienia ALTER w tabeli lub widoku. Użytkownik musi być członkiem sysadmin stałej roli serwera lub db_ddladmin i db_owner stałych ról bazy danych.
Tworzenie indeksu z kolumnami niebędącymi kluczami przy użyciu programu SQL Server Management Studio
W Eksploratorze obiektów wybierz znak plus, aby rozwinąć bazę danych zawierającą tabelę, w której chcesz utworzyć indeks z kolumnami niebędącymi kluczami.
Wybierz znak plus, aby rozwinąć folder Tables.
Wybierz znak plus, aby rozwinąć tabelę, w której chcesz utworzyć indeks z kolumnami niebędącymi kluczami.
Kliknij prawym przyciskiem myszy folder Indeksy, wskaż Nowy indeksi wybierz Indeks nieklasterowany....
W oknie dialogowym Nowy indeks, na stronie Ogólne, wprowadź nazwę nowego indeksu w polu nazwa indeksu.
Na karcie Kolumny klucza indeksu wybierz pozycję Dodaj....
W oknie dialogowym Wybierz kolumny ztable_name zaznacz pole wyboru lub pola wyboru kolumny lub kolumn tabeli, które mają zostać dodane do indeksu.
Wybierz pozycję OK.
Na karcie Dołączone kolumny wybierz pozycję Dodaj....
W oknie dialogowym Wybierz kolumny ztable_name zaznacz pole wyboru lub pola wyboru tych kolumn tabeli, które mają zostać dodane do indeksu jako kolumny inne niż kluczowe.
Wybierz pozycję OK.
W oknie dialogowym Nowy indeks wybierz OK.
Tworzenie indeksu z kolumnami niekluczowymi przy użyciu Transact-SQL
W Eksploratorze obiektównawiąż połączenie z wystąpieniem silnika bazy danych.
Na pasku Standard wybierz pozycję Nowe zapytanie.
Skopiuj poniższy przykład i wklej go w oknie zapytania, a następnie wybierz pozycję Wykonaj.
USE AdventureWorks2022; GO -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns. -- index key column is PostalCode and the nonkey columns are -- AddressLine1, AddressLine2, City, and StateProvinceID. CREATE NONCLUSTERED INDEX IX_Address_PostalCode ON Person.Address (PostalCode) INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID); GO