Udostępnij za pośrednictwem


Włączanie indeksów i ograniczeń

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

W tym temacie opisano sposób włączania wyłączonego indeksu w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL. Po wyłączeniu indeksu pozostaje on w stanie wyłączonym, dopóki indeks nie zostanie ponownie zbudowany lub usunięty.

w tym temacie

Przed rozpoczęciem

Ograniczenia i ograniczenia

  • Po odbudowaniu indeksu wszystkie ograniczenia, które zostały wyłączone z powodu wyłączenia indeksu, muszą być włączone ręcznie. Ograniczenia KLUCZ PODSTAWOWY i UNIKATOWE są włączone przez ponowne skompilowanie skojarzonego indeksu. Aby można było włączyć ograniczenia KLUCZA OBCEGO odwołujące się do ograniczenia KLUCZA GŁÓWNEGO lub UNIKALNEGO, ten indeks musi zostać przebudowany (włączony). Ograniczenia KLUCZA OBCEgo są włączone przy użyciu instrukcji ALTER TABLE CHECK CONSTRAINT.

  • Nie można przeprowadzić rekonstrukcji wyłączonego indeksu klastrowanego, gdy opcja ONLINE jest ustawiona na ON.

  • Gdy indeks klastrowany jest wyłączony lub włączony, a indeks nieklastrowany jest wyłączony, akcja indeksu klastrowanego zawiera następujące wyniki dla wyłączonego indeksu nieklastrowanego.

    Akcja indeksu klastrowanego Wyłączony indeks nieklastrowany ...
    Przebudowa indeksu ALTER. Pozostaje wyłączona.
    ALTER INDEX ALL REBUILD. Jest przebudowany i włączony.
    DROP INDEX (usuń indeks) Pozostaje wyłączona.
    UTWÓRZ INDEKS ZA POMOCĄ DROP_EXISTING. Pozostaje wyłączone.

    Utworzenie nowego indeksu klastrowanego działa tak samo jak ALTER INDEX ALL REBUILD.

  • Dozwolone akcje dla indeksów nieklastrowanych skojarzonych z indeksem klastrowanym zależą od stanu, zarówno wyłączonego, jak i włączonego, obu typów indeksów. Poniższa tabela zawiera podsumowanie dozwolonych akcji dla indeksów nieklastrowanych.

    Akcja indeksu nieklastrowanego Gdy indeksy klastrowane i nieklastrowane są wyłączone. Gdy indeks klastrowany jest włączony i indeks nieklastrowany jest w obu stanach.
    ALTER INDEX REBUILD. Akcja kończy się niepowodzeniem. Akcja zakończy się pomyślnie.
    USUŃ INDEKS Akcja zakończy się pomyślnie. Akcja zakończy się pomyślnie.
    UTWÓRZ INDEKS ZA POMOCĄ DROP_EXISTING. Akcja kończy się niepowodzeniem. Akcja zakończy się pomyślnie.
  • Podczas odbudowywania wyłączonych skompresowanych indeksów nieklastrowanych, ustawienie data_compression będzie domyślnie mieć wartość "none", co oznacza, że indeksy będą rozkompresowane. Jest to spowodowane utratą metadanych ustawień kompresji, gdy indeksy nieklastrowane są wyłączone. Aby obejść ten proces, należy określić jawną kompresję danych w instrukcji rebuild.

Bezpieczeństwo

Uprawnienia

Wymaga uprawnienia ALTER w tabeli lub widoku. W przypadku korzystania z DBCC DBREINDEX użytkownik musi być właścicielem tabeli, być członkiem stałej roli serwera sysadmin, lub stałych ról bazy danych db_ddladmin i db_owner.

Korzystanie z programu SQL Server Management Studio

Aby ponownie włączyć wyłączony indeks

  1. W Eksploratorze obiektów kliknij znak plus, aby rozwinąć bazę danych zawierającą tabelę, w której chcesz włączyć indeks.

  2. Kliknij znak plusa, aby rozwinąć folder Tables.

  3. Kliknij znak plusa, aby rozwinąć tabelę, w której chcesz włączyć indeks.

  4. Kliknij znak plusa, aby rozwinąć folder Indeksy.

  5. Kliknij prawym przyciskiem myszy indeks, który chcesz włączyć, i wybierz polecenie Skompiluj ponownie.

  6. W oknie dialogowym ponownego kompilowania indeksów sprawdź, czy prawidłowy indeks znajduje się w indeksach , aby ponownie skompilować siatkę, a następnie kliknij przycisk OK.

Aby włączyć wszystkie indeksy w tabeli

  1. W Eksploratorze obiektów kliknij znak plus, aby rozwinąć bazę danych zawierającą tabelę, na której chcesz włączyć indeksy.

  2. Kliknij znak plusa, aby rozwinąć folder Tables.

  3. Kliknij znak plusa, aby rozwinąć tabelę, w której chcesz włączyć indeksy.

  4. Kliknij prawym przyciskiem myszy folder Indexes i wybierz polecenie Rebuild All.

  5. W oknie dialogowym ponownego kompilowania indeksów sprawdź, czy prawidłowe indeksy znajdują się w indeksach , aby ponownie skompilować siatkę, a następnie kliknij przycisk OK. Aby usunąć indeks z indeksów w celu odbudowy siatki, wybierz indeks, a następnie naciśnij klawisz Delete.

Następujące informacje są dostępne w oknie dialogowym Ponowne kompilowanie indeksów:

Korzystanie z Transact-SQL

Aby włączyć wyłączony indeks przy użyciu komendy ALTER INDEX

  1. W Eksploratorze obiektów połącz się z wystąpieniem silnika bazy danych.

  2. Na pasku standardowym kliknij pozycję Nowe zapytanie.

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

    USE AdventureWorks2022;  
    GO  
    -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table.  
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
    REBUILD;   
    GO  
    

Aby włączyć wyłączony indeks przy użyciu polecenia CREATE INDEX

  1. W Eksploratorze obiektów nawiąż połączenie z wystąpieniem Silnika bazy danych.

  2. Na pasku standardowym kliknij pozycję Nowe zapytanie.

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

    USE AdventureWorks2022;  
    GO  
    -- re-creates the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    -- using the OrganizationLevel and OrganizationNode columns  
    -- and then deletes the existing IX_Employee_OrganizationLevel_OrganizationNode index  
    CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
       (OrganizationLevel, OrganizationNode)  
    WITH (DROP_EXISTING = ON);  
    GO  
    

Aby włączyć indeks wyłączony przy użyciu polecenia DBCC DBREINDEX

  1. W Eksploratorze obiektów , nawiąż połączenie z wystąpieniem silnika bazy danych.

  2. Na pasku narzędzi standardowych kliknij pozycję Nowe zapytanie.

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

    USE AdventureWorks2022;   
    GO  
    -- enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);  
    GO  
    

Aby włączyć wszystkie indeksy w tabeli przy użyciu funkcji ALTER INDEX

  1. W Eksploratorze Obiektów połącz się z wystąpieniem silnika bazy danych.

  2. Na pasku Standardowa kliknij pozycję Nowe zapytanie.

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

    USE AdventureWorks2022;  
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    ALTER INDEX ALL ON HumanResources.Employee  
    REBUILD;  
    GO  
    

Aby włączyć wszystkie indeksy w tabeli przy użyciu polecenia DBCC DBREINDEX

  1. W Eksploratorze obiektów nawiąż połączenie z wystąpieniem Silnika baz danych.

  2. Na pasku Standardowa kliknij pozycję Nowe zapytanie.

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

    USE AdventureWorks2022;   
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", " ");  
    GO  
    

Aby uzyskać więcej informacji, zobacz ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL)i DBCC DBREINDEX (Transact-SQL).