Udostępnij za pośrednictwem


Tworzenie indeksów nieklastrowanych

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database w usłudze Microsoft Fabric

Indeksy nieklastrowane można tworzyć w programie SQL Server przy użyciu programu SQL Server Management Studio lub Transact-SQL. Indeks nieklastrowany to struktura indeksu oddzielona od danych przechowywanych w tabeli, która zmienia kolejność co najmniej jednej wybranej kolumny. Indeksy nieklastrowane często ułatwiają znajdowanie danych szybciej niż przeszukiwanie bazowej tabeli; zapytania mogą czasami być w pełni obsługiwane przez dane w indeksie nieklastrowanym, lub indeks nieklastrowany może wskazywać silnikowi bazy danych wiersze w tabeli bazowej. Ogólnie rzecz biorąc, indeksy nieklastrowane są tworzone w celu zwiększenia wydajności często używanych zapytań, które nie są objęte indeksem klastrowanym lub lokalizowania wierszy w tabeli bez indeksu klastrowanego (nazywanego stertą). Można utworzyć wiele indeksów nieklastrowanych w tabeli lub w widoku indeksowanym.

Przed rozpoczęciem

Typowe implementacje

Indeksy nieklastrowane są implementowane w następujący sposób:

  • unikatowych ograniczeń

    Podczas tworzenia ograniczenia UNIQUE tworzony jest unikatowy indeks nieklastrowany, aby domyślnie wymusić ograniczenie UNIKATOWe. Można określić unikatowy indeks klastrowany, jeśli indeks klastrowany w tabeli jeszcze nie istnieje. Aby uzyskać więcej informacji, zobacz Unikatowe ograniczenia i Ograniczenia kontrolne.

  • indeks niezależny od ograniczenia

    Domyślnie indeks nieklastrowany jest tworzony, jeśli klaster nie jest określony. Maksymalna liczba indeksów nieklastrowanych, które można utworzyć na tabelę, wynosi 999. Obejmuje to wszystkie indeksy utworzone przez klucz PODSTAWOWY lub ograniczenia UNIKATOWE, ale nie obejmują indeksów XML.

  • indeks nieklastrowany w widoku indeksowanym

    Po utworzeniu unikatowego indeksu klastrowanego w widoku można utworzyć indeksy nieklastrowane. Aby uzyskać więcej informacji, zobacz Tworzenie indeksowanych widoków.

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.

Korzystanie z programu SQL Server Management Studio

Aby utworzyć indeks nieklastrowany przy użyciu projektanta tabel

  1. W Eksploratorze obiektów rozwiń bazę danych zawierającą tabelę, w której chcesz utworzyć indeks nieklastrowany.

  2. Rozwiń folder Tables.

  3. Kliknij prawym przyciskiem myszy tabelę, w której chcesz utworzyć indeks nieklastrowany, a następnie wybierz pozycję Design.

  4. Kliknij prawym przyciskiem myszy kolumnę, dla której chcesz utworzyć indeks nieklastrowany, a następnie wybierz pozycję Indeksy/Klucze.

  5. W oknie dialogowym indeksów/kluczy wybierz pozycję Dodaj.

  6. Wybierz nowy indeks w polu tekstowym Wybrany klucz podstawowy/unikatowy lub indeks.

  7. W siatce wybierz pozycję Utwórz jako klaster, a następnie wybierz pozycję Nie z listy rozwijanej po prawej stronie właściwości.

  8. Wybierz Zamknij.

  9. W menu Plik wybierz pozycję Zapisztable_name.

Aby utworzyć indeks nieklastrowany przy użyciu Eksploratora obiektów

  1. W Eksploratorze obiektów rozwiń bazę danych zawierającą tabelę, w której chcesz utworzyć indeks nieklastrowany.

  2. Rozwiń folder Tables.

  3. Rozwiń tabelę, w której chcesz utworzyć indeks nieklastrowany.

  4. Kliknij prawym przyciskiem myszy folder Indeksy, wskaż polecenie Nowy indeksi wybierz pozycję Indeks nieklasterowany....

  5. W oknie dialogowym Nowy indeks na stronie Ogólne wprowadź nazwę nowego indeksu w polu nazwa indeksu.

  6. W obszarze kolumn kluczy indeksu wybierz pozycję Dodaj....

  7. W oknie dialogowym Wybierz kolumny ztable_name zaznacz pole wyboru lub pola wyboru kolumny lub kolumn tabeli, które mają zostać dodane do indeksu nieklastrowanego.

  8. Wybierz pozycję OK.

  9. W oknie dialogowym Nowy indeks wybierz pozycję OK.

Korzystanie z Transact-SQL

Aby utworzyć indeks nieklastrowany w tabeli przy użyciu Transact-SQL

  1. W Eksploratorze obiektów nawiąż połączenie z wystąpieniem silnika bazy danych z zainstalowanym AdventureWorks2022. Możesz pobrać AdventureWorks2022 z przykładowych baz danych .

  2. Na pasku Standardowa wybierz pozycję Nowe zapytanie.

  3. Skopiuj poniższy przykład i wklej go w oknie zapytania, a następnie wybierz pozycję Wykonaj.

    USE AdventureWorks2022;
    GO
    -- Find an existing index named IX_ProductVendor_VendorID and delete it if found.
    IF EXISTS (SELECT name FROM sys.indexes
                WHERE name = N'IX_ProductVendor_VendorID')
        DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
    GO
    -- Create a nonclustered index called IX_ProductVendor_VendorID
    -- on the Purchasing.ProductVendor table using the BusinessEntityID column.
    CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID
        ON Purchasing.ProductVendor (BusinessEntityID);
    GO