Udostępnij za pośrednictwem


DROP INDEX (języka Transact-SQL)

Instrukcja DROP indeks Usuwa z bieżącego indeksów SQL Server Baza danych. Aby usunąć indeks za pomocą Eksplorator obiektów, zobacz How to: Delete an Index (SQL Server Management Studio).

Aby usunąć indeks, który ma klucz podstawowy lub ograniczenie UNIQUE, nie można użyć instrukcja DROP INDEX.Aby usunąć ograniczenia, a następnie usuń indeks, należy użyć ALTER tabela z klauzula DROP CONSTRAINT.

Aby za pomocą instrukcja DROP INDEX można usunąć indeksu klastrowanego i przenieść utworzoną tabela do innej grupa plików lub schemat partycji, określ opcję MOVE TO.

Important noteImportant Note:

Zdefiniowane w składni <drop_backward_compatible_index> zostanie on usunięty w przyszłej wersja programu SQL Server. Należy unikać używania tej składni do upuść indeksów w nowej pracy rozwoju i zaplanować do modyfikowania aplikacji korzystających aktualnie z funkcji.Należy użyć składni, określonym w obszarze <drop_relational_or_xml_index> w zamian. Nie można usunąć indeksy XML przy użyciu składni zgodne ze starszymi wersjami.

Topic link iconKonwencje składni języka Transact-SQL

DROP INDEX
{ <drop_relational_or_xml_or_spatial_index> [ ,...n ] 
| <drop_backward_compatible_index> [ ,...n ]
}

<drop_relational_or_xml_or_spatial_index> ::=
        index_name ON <object> 
    [ WITH ( <drop_clustered_index_option> [ ,...n ] ) ]

<drop_backward_compatible_index> ::=
    [ owner_name. ] table_or_view_name.index_name

<object> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ] 
        table_or_view_name
}

<drop_clustered_index_option> ::=
{
    MAXDOP = max_degree_of_parallelism
    | ONLINE = { ON | OFF }
  | MOVE TO { partition_scheme_name ( column_name ) 
            | filegroup_name
            | "default" 
            }
  [ FILESTREAM_ON { partition_scheme_name 
            | filestream_filegroup_name 
            | "default" } ]
}

Argumenty

  • index_name
    To nazwa indeksu, który ma być usunięty.

  • nazwa_bazy_danych
    Jest nazwą bazy danych.

  • schema_name
    To nazwa schematu, do której należy tabela lub widok.

  • table_or_view_name
    To nazwa tabela lub widoku skojarzonego z indeksu.Indeksy przestrzennej są obsługiwane tylko w tabelach.

    Aby wyświetlić raport indeksów na obiekcie, należy użyć sys.Indexes Służy do wyświetlania katalogu.

  • <drop_clustered_index_option>
    Opcje indeks klastrowany formantów.Te opcje nie można używać z innymi typami indeksu.

  • MAXDOP = max_degree_of_parallelism
    Zastępuje maksymalny stopień proste opcja konfiguracja na czas trwania operacji indeksu.Aby uzyskać więcej informacji zobaczmax degree of parallelism Option.W celu ograniczenia liczby procesorów używanych w realizacji planu równoległych, należy użyć MAXDOP.Maksymalna to 64 procesorów.

    Important noteImportant Note:

    MAXDOP nie jest dozwolona dla indeksów przestrzennej lub indeksy XML.

    max_degree_of_parallelism może być:

    • 1
      Wyłącza generowanie planu równoległych.

    • >1
      Ogranicza maksymalną liczbę procesorów używanych w operacji indeksu równolegle do określonej liczby.

    • 0 (domyślny)
      Używa rzeczywista liczba procesorów lub mniej oparte na bieżącym obciążenia systemu.

    Aby uzyskać więcej informacji zobacz Konfigurowanie równoległa operacje indeksu.

    Uwaga

    Są dostępne tylko w operacji równoległych indeksu SQL Server Wersje Enterprise Developer i oceny.

  • Tryb ONLINE = ON | WYŁĄCZANIE
    Określa, czy są dostępne do modyfikacji kwerendy i danych podczas operacji indeksu tabel i indeksów skojarzonych.Wartością domyślną jest OFF.

    • DALEJ
      Długoterminowej blokady tabela nie są utrzymywane.Dzięki temu kwerendy lub aktualizacje do tabela podstawowej, aby kontynuować.

    • WYŁĄCZANIE
      Są stosowane blokady tabela, a w tabela jest niedostępny przez czas trwania operacji indeksu.

    Opcja ONLINE można określić tylko po upuszczeniu indeksów klastrowanych.Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia.

    Uwaga

    Są dostępne tylko w operacji indeksu online SQL Server Wersje Enterprise Developer i oceny.

  • MOVE TO { partition_scheme_name**(column_name)** | filegroup_name | "default"
    Określa lokalizację, w której chcesz przenieść wierszy danych, które aktualnie znajdują się w poziom liścia poziom indeks klastrowany.Danych zostanie przeniesiona do nowej lokalizacji, w formie stosu.Można określić schemat partycji lub grupa plików, w nowej lokalizacji, ale schemat partycji lub grupa plików musi już istnieć.MOVE TO nie jest prawidłowy dla widoków indeksowanych lub ponownego zbudowania indeksów nie klastrowanych.Jeżeli nie określono schemat partycji lub grupa plików, tabela wynikowa będą znajdować się w ten sam schemat partycji lub grupa plików, jak został zdefiniowany dla indeks klastrowany.

    Jeżeli indeks klastrowany zostanie usunięte za pomocą MOVE TO, są przebudowywane żadnych nieklastrowany indeksów w tabela bazowa, ale pozostają w ich oryginalnym filegroups lub partycji systemów.Jeżeli w tabela bazowa jest przenoszony na inną grupa plików lub schemat partycji, ponownego zbudowania indeksów nie klastrowanych nie są przenoszone do pokrywa się z nowej lokalizacji w tabela bazowa (sterty).W związku z tym nawet jeśli ponownego zbudowania indeksów nie klastrowanych wcześniej były wyrównane do indeks klastrowany, ich może już być dostosowane do sterty.Aby uzyskać więcej informacji na temat dostosowania indeks partycjonowany Zobacz Special Guidelines for Partitioned Indexes.

    • partition_scheme_name**(column_name)**
      Określa schemat partycji jako lokalizacji w tabela wynikowej.Schemat partycji musi być już utworzony przez jedną TWORZENIE PARTYCJI SCHEMATU or ZMIANY SCHEMATU PARTYCJI.Jeśli zostanie określona lokalizacja nie jest już podzielony na partycje w tabela, w tabela znajduje się w ten sam schemat partycji jako istniejący indeks klastrowany.

      Nazwa kolumna w systemie nie jest ograniczone do kolumn w definicji indeksu.Można określić dowolnej kolumna w tabela bazowa.

    • filegroup_name
      Określa grupa plików, jako lokalizacji w tabela wynikowej.Jeśli lokalizacja nie jest określona tabela nie jest podzielony na partycje, utworzoną tabelę znajduje się w tym samym grupa plików jako indeks klastrowany.grupa plików, w musi już istnieć.

    • **"**domyślne "
      Określa domyślną lokalizację dla tabela wynikowej.

      Uwaga

      W tym kontekście domyślnie nie jest słowem kluczowym.It is an identifier for the default filegroup and must be delimited, as in MOVE TO "default" or MOVE TO [default].Jeśli "domyślne " jest określona opcja QUOTED_IDENTIFIER musi być zestaw ON dla bieżącej sesja.Jest to ustawienie domyślne.Aby uzyskać więcej informacji zobaczzestaw QUOTED_IDENTIFIER (języka Transact-SQL).

  • FILESTREAM_ON {partition_scheme_name | filestream_filegroup_name | **"**domyślne " }
    Określa lokalizację, w której chcesz przenieść tabela FILESTREAM, która aktualnie znajduje się w poziom liścia poziom indeks klastrowany.Danych zostanie przeniesiona do nowej lokalizacji, w formie stosu.Można określić schemat partycji lub grupa plików, w nowej lokalizacji, ale schemat partycji lub grupa plików musi już istnieć.ON FILESTREAM nie jest prawidłowy dla widoków indeksowanych lub ponownego zbudowania indeksów nie klastrowanych.Jeśli schemat partycji nie zostanie określony, dane zostanie umieszczony w ten sam schemat partycji, jak został zdefiniowany dla indeks klastrowany.

    • partition_scheme_name
      Określa schemat partycji danych FILESTREAM.Schemat partycji musi być już utworzony przez jedną TWORZENIE PARTYCJI SCHEMATU or ZMIANY SCHEMATU PARTYCJI.Jeśli zostanie określona lokalizacja nie jest już podzielony na partycje w tabela, w tabela znajduje się w ten sam schemat partycji jako istniejący indeks klastrowany.

      Po określeniu schemat partycji dla MOVE TO należy użyć tego samego schematu partycji dla FILESTREAM ON.

    • filestream_filegroup_name
      Określa grupa plików FILESTREAM, FILESTREAM danych.Jeśli lokalizacja nie jest określona tabela nie jest podzielony na partycje, danych znajduje się w grupę domyślną FILESTREAM plików.

    • **"**domyślne "
      Określa domyślną lokalizację dla danych FILESTREAM.

      Uwaga

      W tym kontekście domyślnie nie jest słowem kluczowym.It is an identifier for the default filegroup and must be delimited, as in MOVE TO "default" or MOVE TO [default].Jeżeli określono wartość "" domyślny", opcja QUOTED_IDENTIFIER musi być włączone dla bieżącej sesja.Jest to ustawienie domyślne.Aby uzyskać więcej informacji zobaczzestaw QUOTED_IDENTIFIER (języka Transact-SQL).

Remarks

Po upuszczeniu indeks nieklastrowany definicja indeksu jest usuwany z metadane i stron danych indeksu (B-drzewa) są usuwane z plików bazy danych.Po upuszczeniu indeks klastrowany definicja indeksu jest usuwany z metadane i wiersze danych, które były przechowywane na poziomie poziom liścia indeks klastrowany są przechowywane w wynikowej tabela nieuporządkowana sterty.Czy całe miejsce wcześniej zajmowane przez indeks jest odzyskany.Następnie można używać tego miejsca dla dowolnego obiektu bazy danych.

Indeks nie może być usunięty, jeśli jest grupa plików, w którym znajduje się w trybie offline lub ustawiony tylko do odczytu.

Po upuszczeniu klastrowanego indeksu widok indeksowany wszystkie ponownego zbudowania indeksów nie klastrowanych i tworzony automatycznie statystyki dotyczące samego widoku są automatycznie usuwane.Ręczne tworzenie statystyki nie są usuwane.

The syntaxtable_or_view_name**.**index_name is maintained for backward compatibility.Indeks XML lub przestrzennej indeksu nie można go usunąć za pomocą składni zgodne ze starszymi wersjami.

Po upuszczeniu są indeksy z zakresów 128 lub większą, Database Engine defers deallocations rzeczywiste strona i ich skojarzone blokady, dopóki po zatwierdzeniu transakcji. Aby uzyskać więcej informacji zobaczDropping and Rebuilding Large Objects.

Czasami indeksy są opuszczane, a następnie ponownie utworzony do reorganizowania lub odbudowanie indeksu, na przykład, aby zastosować nową wartość współczynnik wypełnienia lub na reorganizowanie danych po ładowanie zbiorcze.Aby to zrobić, używając ZMIANA INDEKSUjest bardziej efektywne, szczególnie dla indeksów klastrowanych.ALTER ODBUDOWAĆ indeks ma optymalizację, aby zapobiec obciążenie związane z przebudowywanie ponownego zbudowania indeksów nie klastrowanych.

Korzystanie z narzędzia Opcje z DROP indeks

Po upuszczeniu indeks klastrowany zestaw następujące opcje indeksu: MAXDOP ONLINE i przenieść.

Aby usunąć indeks klastrowany i przenieść do innego schematu grupa plików lub partycji w jedną transakcję utworzoną tabela za pomocą MOVE TO.

Po określeniu ONLINE = ON, kwerendy i zmiany w danych źródłowych i skojarzone ponownego zbudowania indeksów nie klastrowanych nie są blokowane przez transakcję DROP indeks.Tylko jeden indeks klastrowany może być odrzucone online w danej chwili.Pełny opis opcji ONLINE zobacz CREATE INDEX (języka Transact-SQL).

Nie możesz upuścić indeks klastrowany online, gdy indeks jest wyłączone w widoku lub zawiera text, ntext, image, varchar(max), nvarchar(max), varbinary(max), lub xml kolumny z wierszy danych poziom liść.

Za pomocą ONLINE = ON i opcji MOVE TO wymaga dodatkowego tymczasowego miejsca na dysku.Aby uzyskać więcej informacji zobaczDetermining Index Disk Space Requirements.

Po upuszczeniu indeks wynikowy sterty pojawia się w sys.Indexes wykazu widok o wartości NULL w Nazwa kolumna.Aby wyświetlić nazwę tabela łączyć sys.Indexes with sys.Tables on object_id.Na przykład kwerendy Zobacz przykład D.

Na komputerach wieloprocesorowych, na których jest uruchomiony SQL Server 2005 Enterprise Edition lub nowszy, DROP indeks może używać więcej procesorów do skanowania i sortowania operacje związane z upuszczanie indeks klastrowany tak samo, jak wykonać inne kwerendy. Liczba procesorów, które są używane do uruchamiania instrukcja DROP INDEX przez określenie opcji indeksowania MAXDOP można konfigurować ręcznie.Aby uzyskać więcej informacji zobaczKonfigurowanie równoległa operacje indeksu.

Po upuszczeniu indeks klastrowany odpowiednie partycje sterty zachować swoje ustawienia kompresji danych, chyba że zostanie zmodyfikowany schemat partycjonowanie na partycje.Po zmianie schematu partycjonowanie na partycje, wszystkie partycje są przebudowywane do stanu bez kompresji (DATA_COMPRESSION = brak).Aby usunąć indeks klastrowany i zmienić schemat partycjonowanie na partycje wymaga wykonania następujących dwóch kroków:

  1. Usuwanie indeks klastrowany.

  2. Modyfikowanie tabela przy użyciu instrukcji ALTER tabela...REBUILD ...option specifying the compression option.

Po upuszczeniu indeks klastrowany w OFFLINE zostaną usunięte tylko wyższe poziomy indeksów klastrowanych, dlatego operacja jest dość szybko.Jeżeli indeks klastrowany zostanie usunięte w trybie ONLINE, SQL Server Odtwarza sterty dwa razy, raz w kroku 1, a raz w kroku 2. Aby uzyskać więcej informacji na temat kompresji danych zobacz Creating Compressed Tables and Indexes.

Indeksy XML

Nie można określić opcje, po upuszczeniuIndeks XML. Ponadto nie można używać table_or_view_name**.** index_name składni.Po upuszczeniu indeksu głównego XML skojarzony pomocniczy indeksów XML są automatycznie usuwane.Aby uzyskać więcej informacji zobaczIndeksy w kolumnach typu danych XML.

Indeksy przestrzenny

Indeksy przestrzennej są obsługiwane tylko w tabelach.Po upuszczeniu przestrzennej indeksu można określ wszelkie opcje, ani za pomocą . index_name.Poprawna składnia jest następująca:

USUWANIE INDEKSU spatial_index_name DALEJ spatial_table_name;

Aby uzyskać więcej informacji na temat przestrzennej indeksów zobacz Working with Spatial Indexes (Database Engine).

Uprawnienia

DROP indeks, należy wykonać co najmniej, wymagane jest uprawnienie ALTER na tabela lub widoku.To uprawnienie jest udzielane domyślnie sysadmin stała rola serwera and the db_ddladmin and db_owner stałe role bazy danych.

Przykłady

A.Usunięcie indeksu

W następującym przykładzie usunięto indeksu IX_ProductVendor_VendorID na ProductVendor Tabela.

B.Upuszczanie wiele indeksów

W następującym przykładzie usunięto dwa indeksy w ramach pojedynczej transakcji.

C.Upuszczanie indeks klastrowany w tryb online i ustawienie opcji MAXDOP

W następującym przykładzie zostanie usunięty z indeks klastrowany ONLINE Opcja zestaw do ON i MAXDOP zestaw do 8. Ponieważ nie określono opcji MOVE TO, wynikowej tabela są przechowywane w tej samej grupa plików jako indeks.

Uwaga

W tym przykładzie mogą być wykonywane tylko w SQL Server 2005 Enterprise Edition lub nowszy.

D.Upuszczanie indeks klastrowany w tryb online i przenoszenie tabela na nową grupa plików

Poniższy przykład powoduje usunięcie indeks klastrowany online i przenosi grupa plików, w tabela wynikowej (sterty) NewGroup za pomocą MOVE TO Klauzula. The sys.indexes, sys.tables, and sys.filegroups widoki wykazu are queried to verify the index and tabela placement in the filegroups before and after the move.

E.Upuszczanie ograniczenia klucz podstawowy online

Indeksy, które zostały utworzone w wyniku tworzenia ograniczenia klucz podstawowy lub UNIQUE, nie można go usunąć za pomocą DROP indeks.Są one usuwane za pomocą instrukcja ALTER tabela DROP CONSTRAINT.Aby uzyskać więcej informacji zobacz ALTER tabela.

W następującym przykładzie zostanie usunięty przez upuszczenie ograniczenie indeks klastrowany w przypadku ograniczenia klucz podstawowy.The ProductCostHistory tabela has no klucz obcy constraints. Jeśli został on, tych ograniczeń musi zostać najpierw usunięte.

F.Upuszczanie indeks XML

W poniższym przykładzie spadnie indeks XML na ProductModel Tabela.

G.Upuszczanie na tabela FILESTREAM indeks klastrowany

W poniższym przykładzie usuwa indeks klastrowany online i przenosi utworzoną tabela (stosu) i danych FILESTREAM MyPartitionScheme schemat partycji przy użyciu obu MOVE TO Klauzula oraz FILESTREAM ON Klauzula.

USE MyDatabase;
GO
DROP INDEX PK_MyClusteredIndex 
    ON dbo.MyTable 
    MOVE TO MyPartitionScheme
    FILESTREAM_ON MyPartitionScheme;
GO