Włączanie indeksów i ograniczeń
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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:
Aby włączyć indeks wyłączony przy użyciu:
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
W Eksploratorze obiektów kliknij znak plus, aby rozwinąć bazę danych zawierającą tabelę, w której chcesz włączyć indeks.
Kliknij znak plusa, aby rozwinąć folder Tables.
Kliknij znak plusa, aby rozwinąć tabelę, w której chcesz włączyć indeks.
Kliknij znak plusa, aby rozwinąć folder Indeksy.
Kliknij prawym przyciskiem myszy indeks, który chcesz włączyć, i wybierz polecenie Skompiluj ponownie.
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
W Eksploratorze obiektów kliknij znak plus, aby rozwinąć bazę danych zawierającą tabelę, na której chcesz włączyć indeksy.
Kliknij znak plusa, aby rozwinąć folder Tables.
Kliknij znak plusa, aby rozwinąć tabelę, w której chcesz włączyć indeksy.
Kliknij prawym przyciskiem myszy folder Indexes i wybierz polecenie Rebuild All.
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
W Eksploratorze obiektów połącz się z wystąpieniem silnika bazy danych.
Na pasku standardowym kliknij pozycję Nowe zapytanie.
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
W Eksploratorze obiektów nawiąż połączenie z wystąpieniem Silnika bazy danych.
Na pasku standardowym kliknij pozycję Nowe zapytanie.
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
W Eksploratorze obiektów , nawiąż połączenie z wystąpieniem silnika bazy danych.
Na pasku narzędzi standardowych kliknij pozycję Nowe zapytanie.
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
W Eksploratorze Obiektów połącz się z wystąpieniem silnika bazy danych.
Na pasku Standardowa kliknij pozycję Nowe zapytanie.
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
W Eksploratorze obiektów nawiąż połączenie z wystąpieniem Silnika baz danych.
Na pasku Standardowa kliknij pozycję Nowe zapytanie.
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).