Aracılığıyla paylaş


drop INDEX (Transact-SQL)

Önemli notÖnemli

Tanımlanan sözdizimi 'ın<drop_backward_compatible_index> gelecekteki sürüm kaldırılır Microsoft SQL Server.Bu sözdizimi yeni geliştirme çalışması kullanmaktan kaçının ve şu anda özelliğini kullanan uygulamaları değiştirmek plan.Altında belirtilen sözdizimi kullanın <drop_relational_or_xml_index> bunun yerine.Geriye dönük uyumlu sözdizimi kullanarak xml dizinler iptal edemez.

Birini kaldırır veya daha ilişkisel, kayma, süzülmüş, ya da xml dizinler geçerli veritabanından.kümelenmiş dizin ve taşımak için seçeneği belirterek başka bir dosya grubu veya bölümleme düzeni tek bir işlemle elde edilen tablo taşıma.

drop INDEX deyim , birincil anahtar veya benzersiz kısıtlama tanımlayarak oluşturulan dizinler için geçerli değildir.Kısıtlama ve karşılık gelen dizini kaldırmak için alter table drop CONSTRAINT yan tümceile.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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" } ]
}

Bağımsız değişkenler

  • index_name
    Kesilmesini dizin adıdır.

  • veritabanı_adı
    Veritabanının adıdır.

  • schema_name
    tablo ya da görünümün ait olduğu şema addır.

  • table_or_view_name
    tablo veya dizin ile ilişkili görünümü adıdır.Kayma dizinler yalnızca tablolar üzerinde desteklenir.

    Bir nesne üzerinde dizinler raporunu görüntülemek için kullanın sys.indexes Katalog görünümü.

  • <drop_clustered_index_option>
    kümelenmiş dizin seçeneklerini denetler.Bu seçenekler, diğer dizin türleri ile kullanılamaz.

  • MAXDOP =max_degree_of_parallelism
    Geçersiz kılar parallelism en büyük ölçüdedizini işlem süresi içinyapılandırma seçeneği. Daha fazla bilgi için, bkz. en büyük ölçüde parallelism seçeneği.maxdop paralel planı yürütme içinde kullanılan işlemci sayısını sınırlamak için kullanın.En fazla 64 işlemci ' dir.

    Önemli notÖnemli

    maxdop kayma dizinler veya xml dizinler için izin verilmez.

    max_degree_of_parallelismaşağıdakilerden biri olabilir:

    • 1
      Paralel planı oluşturma bastırır.

    • >1
      Belirtilen rakama paralel dizin işleminde kullanılan işlemcilerin sayısı sınırlar.

    • 0 (varsayılan)
      Gerçek işlemci sayısını veya geçerli sistem iş yükünün üzerinde göre daha az kullanır.

    Daha fazla bilgi için, bkz. Paralel dizin işlemleri yapılandırma.

    Not

    Paralel dizin işlemleri, yalnızca SQL Server kuruluş, Developer ve değerlendirme sürümleri.

  • ÇEVRİMİÇİ = ON | OFF
    Temel alınan tablo ve ilişkili dizinler dizin işlemi sırasında sorguları ve veri değişikliği için kullanılabilir olup olmadığını belirtir.Varsayılan kapalı'dır.

    • ON
      Uzun süreli tablo kilitleri tutulmuyor.Bu sorguları veya devam etmek için temel tablo için güncelleştirmeler sağlar.

    • KAPALI
      Tablo kilitleri uygulanır ve tablo dizini işlem süresi için kullanılamaz.

    Kümelenmiş dizin düşürdüğünüzde çevrimiçi seçeneği yalnızca belirtilebilir.Daha fazla bilgi için açıklamalar bölümüne bakın.

    Not

    Çevrimiçi dizin işlemleri, yalnızca SQL Server kuruluş, Developer ve değerlendirme sürümleri.

  • MOVE TO { partition_scheme_name**(** column_name**)** | filegroup_name | "varsayılan""
    yaprakdüzey kümelenmiş dizinolan veri satırlarını taşımak için bir konumu belirtir. Verileri bir yığın biçiminde yeni konuma taşınır.bölümleme düzeni veya dosya grubu yeni konumu olarak belirtebilirsiniz, ancak bölümleme düzeni veya dosya grubu önceden mevcut olmalıdır.TAŞIMAK için dizin oluşturulmuş görünümler veya kümelenmemiş dizinler için geçerli değil.bölümleme düzeni veya dosya grubu belirtilmezse, ortaya çıkan tablo aynı bölümleme düzeni veya dosya grubu kümelenmiş diziniçin tanımlanan bulunur.

    TAŞIMAK için kullanarak kümelenmiş dizin bırakılan, tüm temel tablo kümelenmemiş dizinler yeniden oluşturulur, ancak kendi özgün dosya gruplarını veya bölümleme şemaları kalırlar.temel tablo farklı dosya grubu ya da bölümleme düzenitaşınırsa, kümelenmemiş dizinleri temel tablo (yığın) yeni konumu ile çakıştığı taşınmaz.Kümelenmemiş dizinleri ile kümelenmiş dizindaha önce hizalanmış olsa bile, bu nedenle, bunlar artık ile öbek hizalanmamış olabilir.bölümlenmiş dizinhizalamahakkında daha fazla bilgi için bkz: Bölümlenmiş dizinler için özel yönergeleri.

    • partition_scheme_name ()sütun_adı )
      Ortaya çıkan tablokonumu olarak bir bölümleme düzeni belirtir.bölümleme düzeni zaten ya da yürüterek oluşturulmuş olması gerekir Bölüm düzeni oluşturmak veya alter bölüm düzeni.Hiçbir konumu belirtilir ve tablo bölümlenmiş tablo aynı bölümleme düzeni varolan bir kümelenmiş dizinolarak yer alır.

      Düzeninde sütun adını sütun dizini tanımındaki için sınırlı değildir.Herhangi bir sütun temel tablo belirtilebilir.

    • filegroup_name
      Ortaya çıkan tablokonumu olarak bir dosya grubu belirtir.Hiçbir konumu belirtilir ve tablo bölümlenmiş değil, ortaya çıkan tablo kümelenmiş dizinolarak aynı dosya grubu dahil edilmez.dosya grubu önceden mevcut olmalıdır.

    • "varsayılan""
      Ortaya çıkan tabloiçin varsayılan konumu belirtir.

      Not

      Bu bağlamda, varsayılan anahtar sözcük değil.Varsayılan dosya grubu için bir tanımlayıcıdır ve, gibi taşımak için ayrılmış gerekir "varsayılan" ya da taşımak için varsayılan[]."Varsayılan" belirtilmişse, QUOTED_IDENTIFIER seçeneği olmalıdır küme için geçerli oturum.Bu varsayılan ayardır.Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-SQL).

  • FILESTREAM_ON { partition_scheme_name | filestream_filegroup_name | "default" }
    Şu anda yaprakdüzey kümelenmiş dizinFILESTREAM tablo taşımak için bir konumu belirtir. Verileri bir yığın biçiminde yeni konuma taşınır.bölümleme düzeni veya dosya grubu yeni konumu olarak belirtebilirsiniz, ancak bölümleme düzeni veya dosya grubu önceden mevcut olmalıdır.FILESTREAM on dizin oluşturulmuş görünümler veya kümelenmemiş dizinler için geçerli değil.bölümleme düzeni belirtilmezse, verileri aynı bölümleme düzeni kümelenmiş diziniçin tanımlanan bulunur.

    • partition_scheme_name
      FILESTREAM veri bölümleme düzeni belirtir.bölümleme düzeni zaten ya da yürüterek oluşturulmuş olması gerekir Bölüm düzeni oluşturmak veya alter bölüm düzeni.Hiçbir konumu belirtilir ve tablo bölümlenmiş tablo aynı bölümleme düzeni varolan bir kümelenmiş dizinolarak yer alır.

      TAŞIMAK için bir bölümleme düzeni belirtirseniz, aynı bölümleme düzeni FILESTREAM on için kullanmanız gerekir.

    • filestream_filegroup_name
      FILESTREAM veri FILESTREAM dosya grubu belirtir.Hiçbir konumu belirtilir ve tablo bölümlenmiş değil, veri içinde varsayılan FILESTREAM dosya grubudahil edilir.

    • "varsayılan""
      FILESTREAM veriler için varsayılan konumu belirtir.

      Not

      Bu bağlamda, varsayılan anahtar sözcük değil.Varsayılan dosya grubu için bir tanımlayıcıdır ve, gibi taşımak için ayrılmış gerekir "varsayılan" ya da taşımak için varsayılan[]."Varsayılan" belirtilmişse, QUOTED_IDENTIFIER seçeneği geçerli oturumiçin açık olmalıdır.Bu varsayılan ayardır.Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-SQL).

Açıklamalar

kümelenmemiş dizin kesildiği zaman dizin tanımı meta veriler kaldırılır ve dizin veri sayfaları ( B-ağacı) veritabanı dosyaları kaldırılır.kümelenmiş dizin kesildiği zaman dizin tanımı meta veriler kaldırılır ve yaprakdüzey kümelenmiş dizin depolanmış veri satırlarını sonuç Sýralanmamýþ tablo, bir yığın depolanır. Daha önce dizinin kapladığı alan aküsü.Bu alan, daha sonra herhangi bir veritabanı nesnesi için kullanılabilir.

Bir dizin olduğu bulunduğu dosya grubu çevrimdışıysa bırakılan olamaz veya salt okunur küme .

' % S'dizin kümelenmiş dizin dizinli görünüm kesildiği zaman tüm kümelenmemiş dizinleri ve aynı görünüme otomatik oluşturulan İstatistikleri otomatik olarak bırakılır.El ile oluşturulan istatistikleri bırakılan değil.

Sözdizimitable_or_view_name**.**index_name geriye dönük uyumluluk için korunur.xml dizinler veya kayma dizin geriye dönük uyumlu sözdizimi kullanarak iptal edilemez.

Dizinleri 128 uzanımı ile ya da daha fazla düşürülme zamanını Veritabanı Altyapısı defers gerçek sayfa deallocations ve kadar sonra ilişkili bunların kilitlerihareket tamamlama.Daha fazla bilgi için, bkz. Bırakarak ve büyük nesneler yeniden oluşturuluyor.

Bazen dizinler silinir ve yeniden düzenlemek veya yeni bir doldurma faktörü değeri uygulamak için veya bir toplu yüklemesonra verileri yeniden düzenlemek için gibi dizini yeniden silinmeli.Bunu kullanarak yapmak için alter INDEXözellikle kümelenmiş dizinler için daha verimli olur.alter dizin yeniden kümelenmemiş dizinleri yeniden oluşturuluyor yükünü önlemek için en iyi duruma getirme vardır.

drop INDEX ile seçeneklerini kullanma

küme maxdop, çevrimiçi ve taşımak için.

kümelenmiş dizin ve başka bir dosya grubu veya bölümleme düzeni tek bir işlemle elde edilen tablo taşımak için taşımak için kullanın.

Çevrimiçi belirttiğinizde = on, sorgular ve alttaki veri ilişkili ve kümelenmemiş dizinleri değil drop INDEX hareket tarafından engellendi.Her saatyalnızca bir kümelenmiş dizin çevrimiçi bırakılabilir.Çevrimiçi seçeneğini eksiksiz bir açıklaması için bkz: CREATE INDEX (Transact-SQL).

Çevrimiçi dizin üzerinde bir görünümü devre dışı bırakılır veya içeren bir kümelenmiş dizin bırakamazsınız text, ntext, image, varchar(max), nvarchar(max), varbinary(max), veya xml sütunlarında yaprak-düzey veri satırları.

ÇEVRİMİÇİ kullanarak on = ve taşımak için seçenekleri ek geçici disk alanı gerektirir.Daha fazla bilgi için, bkz. Dizin Disk alanı gereksinimleri belirleme.

Dizin bırakılan sonra ortaya çıkan öbek yer sys.indexes Katalog görünümü içinde null ile ad sütun.birleştirmek tablo adını görüntülemek içinsys.indexes ile sys.tables üzerinde object_id. Bir örnek sorgu için örnek d. Bkz.

Çok işlemcili bilgisayarlarda çalışan SQL Server 2005 Enterprise Edition ya da daha sonra bırakma dizini kullanabilir sıralama işlemleri kümelenmiş dizin, diğer sorguları do. olduğu gibi bırakarak ile ilişkili ve tarama gerçekleştirmek için daha fazla işlemcimaxdop dizin seçeneği belirterek drop INDEX deyim çalıştırmak için kullanılan işlemci sayısını el ile yapılandırabilirsiniz.Daha fazla bilgi için, bkz. Paralel dizin işlemleri yapılandırma.

kümelenmiş dizin kesildiği zaman bölümleme şeması değiştirilmiş sürece karşılık gelen öbek bölümleri kendi veri sıkıştırma ayarını korur.bölümleme şeması değiştirdiyseniz, tüm bölümlerin sıkıştırılmamış bir duruma yeniden oluşturulur (DATA_COMPRESSION = none).kümelenmiş dizin ve bölümleme değiştirmek için aşağıdaki iki adımdan düzeni gerektirir:

  1. kümelenmiş dizinbırakın.

  2. Bir tablo , bir alter table kullanarak değiştirebilirsiniz...YENİDEN...sıkıştırma seçeneği belirtme seçeneği.

Kümelenmiş dizinler yalnızca üst düzeyde bir kümelenmiş dizin çevrimdışı kesildiği zaman kaldırılır; Bu nedenle, işlem oldukça hızlıdır.kümelenmiş dizin çevrimiçi kesildiği zaman SQL Server öbek için adım 1 için bir kez ve bir kez adım 2 için iki kez yeniden oluşturur.Veri sıkıştırma hakkında daha fazla bilgi için bkz: Sıkıştırılmış tablolar ve dizinler oluşturma.

xml dizinler

Siz düşürdüğünüzde seçenekleri belirtilemez birxml dizini.Ayrıca, kullanamazsınız table_or_view_name**.**index_name sözdizimi.Birincil xml dizin kesildiği zaman ilişkili ikincil xml dizinler otomatik olarak kesilir.Daha fazla bilgi için, bkz. xml veri türü sütun dizinlerde.

Kayma dizinler

Kayma dizinler yalnızca tablolar üzerinde desteklenir.Kayma dizin düşürdüğünüzde, tüm seçenekleri belirtin veya kullanmak **.**index_name.Doğru sözdizimi aşağıdaki gibidir:

drop INDEX spatial_index_name on spatial_table_name;

Kayma dizinler hakkında daha fazla bilgi için bkz: Kayma dizinler (veritabanı altyapısı) ile çalışma.

İzinler

yürütmek drop INDEX, en azından, tablo veya Görünüm alter izni gereklidir.Varsayılan olarak bu izin verilir sysadmin sabit sunucu rolü ve db_ddladmin ve db_owner veritabanı rolleri sabit.

Örnekler

A.Bir dizin

Aşağıdaki örnek dizin siler IX_ProductVendor_VendorID , ProductVendor tablo.

USE AdventureWorks2008R2;
GO
DROP INDEX IX_ProductVendor_BusinessEntityID 
    ON Purchasing.ProductVendor;
GO

B.Birden çok dizin siliniyor

Aşağıdaki örnek, tek bir işlemle iki dizinleri siler.

USE AdventureWorks2008R2;
GO
DROP INDEX
    IX_PurchaseOrderHeader_EmployeeID ON Purchasing.PurchaseOrderHeader,
    IX_Address_StateProvinceID ON Person.Address;
GO

C.kümelenmiş dizin çevrimiçi bırakarak ve maxdop seçeneği ayarlama

Aşağıdaki örnek ile kümelenmiş dizin siler ONLINE seçeneğini küme için ON ve MAXDOP küme 8.TAŞIMAK için seçenek belirtilmediği için ortaya çıkan tablo dizini olarak aynı dosya grubu depolanır.

Not

Bu örnek yalnızca çalıştırılabilir SQL Server 2005 Enterprise Edition veya üstü.

USE AdventureWorks2008R2;
GO
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate 
    ON Production.BillOfMaterials WITH (ONLINE = ON, MAXDOP = 2);
GO

D.kümelenmiş dizin çevrimiçi bırakarak ve yeni dosya grubu tablo taşıma

Aşağıdaki örnek, çevrimiçi bir kümelenmiş dizin siler ve elde edilen tablo (yığın) için dosya grubutaşırNewGroup kullanarak MOVE TOyan tümce. sys.indexes, sys.tables, Ve sys.filegroupskatalog görünümleri önce ve sonra 5. içinde dizin ve tablo yerleşimi doğrulamak için sorgulanan Taşı.

USE AdventureWorks2008R2;
GO
--Create a clustered index on the PRIMARY filegroup if the index does not exist.
IF NOT EXISTS (SELECT name FROM sys.indexes WHERE name = 
            N'AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate')
    CREATE UNIQUE CLUSTERED INDEX
        AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate 
    ON Production.BillOfMaterials (ProductAssemblyID, ComponentID, 
        StartDate)
    ON 'PRIMARY';
GO
-- Verify filegroup location of the clustered index.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
    i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
    JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
    JOIN sys.tables as t ON i.object_id = t.object_id
        AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U')
GO
--Create filegroup NewGroup if it does not exist.
IF NOT EXISTS (SELECT name FROM sys.filegroups
                WHERE name = N'NewGroup')
    BEGIN
    ALTER DATABASE AdventureWorks2008R2
        ADD FILEGROUP NewGroup;
    ALTER DATABASE AdventureWorks2008R2
        ADD FILE (NAME = File1,
            FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\File1.ndf')
        TO FILEGROUP NewGroup;
    END
GO
--Verify new filegroup
SELECT * from sys.filegroups;
GO
-- Drop the clustered index and move the BillOfMaterials table to
-- the Newgroup filegroup.
-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate 
    ON Production.BillOfMaterials 
    WITH (ONLINE = ON, MOVE TO NewGroup);
GO
-- Verify filegroup location of the moved table.
SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
    i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
    JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
    JOIN sys.tables as t ON i.object_id = t.object_id
        AND i.object_id = OBJECT_ID(N'Production.BillOfMaterials','U');
GO

E.PRIMARY key kısıtlaması çevrimiçi bırakarak

drop INDEX kullanarak birincil anahtar veya benzersiz kısıtlama oluşturma sonucunda oluşturulan dizinler iptal edilemez.Bunlar tablo bırakma kısıtlaması alter deyimkullanarak bırakılır.Daha fazla bilgi için bkz: alter table.

Aşağıdaki örnek, kısıtlamanın bırakarak PRIMARY key kısıtlaması ile kümelenmiş dizin siler.ProductCostHistorytablo hiçbir yabancı anahtar kısıtlamaları vardır. Olsaydı, bu kısıtlamalar önce kaldırılması gerekir.

USE AdventureWorks2008R2;
GO
-- Set ONLINE = OFF to execute this example on editions other than Enterprise Edition.
ALTER TABLE Production.TransactionHistoryArchive
DROP CONSTRAINT PK_TransactionHistoryArchive_TransactionID
WITH (ONLINE = ON);

GO

F.xml dizinler bırakılıyor

Aşağıdaki örnek, bir xml dizin üzerinde düşünceye ProductModel tablo.

USE AdventureWorks2008R2;
GO
DROP INDEX PXML_ProductModel_CatalogDescription 
    ON Production.ProductModel;
GO

G.FILESTREAM tablo kümelenmiş dizin siliniyor

Aşağıdaki örnek, çevrimiçi bir kümelenmiş dizin siler ve elde edilen tablo (yığın) ve FILESTREAM veri taşır MyPartitionScheme bölümleme düzeni her ikisini birden kullanarak MOVE TO yan tümce ve FILESTREAM ON yan tümce.

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