drop INDEX (Transact-sql)
Önemli |
---|
Tanımlanan sözdizimi <drop_backward_compatible_index>bir gelecek sürümünde kaldırılacak Microsoft SQL Server. Yeni geliştirme çalışmalarında bu sözdizimini kullanarak önlemek ve şu anda özelliğini kullanan uygulamaları değiştirmek planlıyoruz. Altında belirtilen sözdizimi kullanın <drop_relational_or_xml_index>yerine. xml dizinler, geriye dönük uyumlu sözdizimi kullanarak bırakılan. |
Birini kaldırır veya daha ilişkisel, kayma, süzülmüş, ya da xml dizinler geçerli veritabanından. Kümelenmiş dizin bırakın ve taşımak için seçeneği belirterek başka bir filegroup veya bölüm düzeni tek bir işlemle elde edilen tablo gitme.
drop INDEX deyimi, PRIMARY key veya UNIQUE kısıtlamaları 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ümcesi ile.
Transact-SQL Sözdizim 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.database_name
Veritabanının adıdır.schema_name
Tablo veya görünümün ait olduğu şemanın adıdır.table_or_view_name
Dizin ile ilişkili tablo veya görünümün adıdır. Kayma dizinler yalnızca tabloları üzerinde desteklenir.Bir nesne üzerinde dizinler bir raporu görüntülemek için kullanın sys.indexes Katalog görünümü.
<drop_clustered_index_option>
Denetimleri Kümelenmiş dizin seçenekleri. Bu seçenekler, diğer dizin türleri ile kullanılamaz.MAXDOP =max_degree_of_parallelism
Geçersiz kılan en büyük ölçüde parallelism dizini işlem süresi için yapılandırma seçeneği. Daha fazla bilgi için, bkz. Maksimum ölçüde parallelism sunucu yapılandırma seçeneği yapılandırmak. Paralel plan yürütmede kullanılan işlemci sayısını sınırlamak için MAXDOP kullanın. En fazla değer 64 işlemcidir.Önemli maxdop kayma dizinler veya xml dizinler için izin verilmez.
max_degree_of_parallelismaşağıdakilerden biri olabilir:
1
Paralel plan üretimini baskılar.>1
Paralel bir dizin işleminde kullanılan en yüksek işlemci sayısını belirtilen sayı ile sınırlar.0 (varsayılan)
Geçerli sistem iş yüküne bağlı olarak gerçek işlemci sayısını veya daha azını kullanır.
Daha fazla bilgi için, bkz. Parallel ındex işlemi yapılandırma.
[!NOT]
Paralel dizin işlemleri her sürümünde kullanılamaz Microsoft SQL Server. Sürümü tarafından desteklenen özellikleri listesi için SQL Serverbakın SQL Server 2012 Sürümleri Tarafından Desteklenen Özellikler.
ONLINE = ON | OFF
Alttaki tabloların ve ilişkili dizinlerin dizin işlemi sırasında sorgularda ve veri değiştirmede kullanılıp kullanılamayacağını belirtir. Varsayılan değer OFF'tur.ON
Uzun vadeli tablo kilitleri tutulur değil. Bu sorguları veya devam etmek için temel tablo güncelleştirmelerini sağlar.OFF
Tablo dizini işlem süresi için kullanılamaz ve tablo kilitleri uygulanır.
Kümelenmiş dizin düşürdüğünüzde ONLINE seçeneği yalnızca belirtilebilir. Daha fazla bilgi için, Yorumlar bölümüne bakın.
[!NOT]
Çevrimiçi dizin işlemleri her sürümünde kullanılamaz Microsoft SQL Server. Sürümü tarafından desteklenen özellikleri listesi için SQL Serverbakın SQL Server 2012 Sürümleri Tarafından Desteklenen Özellikler.
MOVE TO { partition_scheme_name**(column_name)** | filegroup_name | "varsayılan''
Şu anda yaprak Kümelenmiş dizin düzeyinde veri satırları taşımak için bir konumu belirtir. Veriler, bir yığın biçiminde yeni konuma taşınır. Bölüm düzenini veya filegroup yeni konumu olarak belirtebilirsiniz, ancak bölüm düzenini veya filegroup önceden mevcut olmalıdır. MOVE TO dizinli görünümler veya kümelenmemiş dizinler için gereçli değildir. Bölüm düzenini veya filegroup belirtilmezse, elde edilen tablo aynı bölüm düzenini veya filegroup Kümelenmiş dizin için tanımlanan bulunur.Kümelenmiş bir dizin taşımak için kullanarak bırakılan, temel tablo herhangi bir kümelendirilmemiş dizinler yeniden oluşturulur, ancak kendi özgün filegroups veya bölüm düzeni kalırlar. Temel tablo farklı bir filegroup veya bölüm düzeni için taşınırsa, kümelendirilmemiş dizinler temel tablo (yığın) yeni konumu ile aynı tarihte taşınmaz. Kümelendirilmemiş dizinler önceden Kümelenmiş dizin ile uyumlu bile bile, bu nedenle, onlar artık yığın ile hizalı. Bölümlenmiş bir dizin hizalama hakkında daha fazla bilgi için bkz: Bölümlenmiş tablolar ve dizinler.
partition_scheme_name**(column_name)**
Bir bölüm düzeni ortaya çıkan tablonun konumunu belirtir. Bölüm düzeni zaten ya da yürüterek oluşturulmuş olmalıdır create PARTITION düzeni veya alter PARTITION düzeni. Hiçbir konumu belirtilir ve tablo bölümlenmiş tablo aynı bölüm düzenini var Kümelenmiş dizin yer almaktadır.Sütun adı düzeninde Dizin tanımı sütunlarda sınırlı değildir. Temel tablodaki tüm sütun belirtilebilir.
filegroup_name
Ortaya çıkan tablo konumu olarak bir filegroup belirtir. Hiçbir konumu belirtilir ve tablo bölümlenmiş değil, ortaya çıkan tablo aynı filegroup Kümelenmiş dizin olarak yer almaktadır. Filegroup önceden mevcut olmalıdır."varsayılan''
Ortaya çıkan tablo için varsayılan konumu belirtir.[!NOT]
Bu bağlamda default bir anahtar sözcük değildir. Bu varsayılan filegroup tanımlayıcısı ve, gider olarak ayrılmış gerekir "varsayılan" ya da taşımak için varsayılan[]. Eğer "varsayılan" belirtilirse, quoted_ıdentıfıer seçeneği geçerli oturum için on ayarlanmalıdır. 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 yaprak Kümelenmiş dizin düzeyi FILESTREAM tabloda taşımak için bir konumu belirtir. Veriler, bir yığın biçiminde yeni konuma taşınır. Bölüm düzenini veya filegroup yeni konumu olarak belirtebilirsiniz, ancak bölüm düzenini veya filegroup önceden mevcut olmalıdır. FILESTREAM on dizin oluşturulmuş görünümler veya kümelendirilmemiş dizinler için geçerli değil. Bir bölüm düzeni belirtilirse, verileri aynı bölüm düzeni içinde Kümelenmiş dizin için tanımlanan bulunur.partition_scheme_name
FILESTREAM veri için bir bölüm düzeni belirtir. Bölüm düzeni zaten ya da yürüterek oluşturulmuş olmalıdır create PARTITION düzeni veya alter PARTITION düzeni. Hiçbir konumu belirtilir ve tablo bölümlenmiş tablo aynı bölüm düzenini var Kümelenmiş dizin yer almaktadır.TAŞIMAK için bir bölüm düzeni belirtirseniz, FILESTREAM on için aynı bölüm düzenini kullanmanız gerekir.
filestream_filegroup_name
FILESTREAM filegroup FILESTREAM veri belirtir. Hiçbir konumu belirtilir ve tablo bölümlenmiş değil, veriler varsayılan FILESTREAM filegroup dahil edilir."varsayılan''
FILESTREAM veri için varsayılan konumu belirtir.[!NOT]
Bu bağlamda default bir anahtar sözcük değildir. Bu varsayılan filegroup tanımlayıcısı ve, gider olarak ayrılmış gerekir "varsayılan" ya da taşımak için varsayılan[]. Eğer "varsayılan" belirtilmişse, quoted_ıdentıfıer seçeneği geçerli oturum için on olmalıdır. Bu, varsayılan ayardır. Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-sql).
Açıklamalar
Kümelendirilmemiş dizin bırakılan Dizin tanımı meta verileri kaldırılır ve dizin veri sayfaları (b-ağaç) veritabanı dosyaları kaldırılır. Kümelenmiş bir dizin bırakılan Dizin tanımı meta verileri kaldırılır ve kümelenmiş dizin yaprak düzeyini depolanmış veri satırlarını sonuç sırasız tablosunda bir yığın saklanır. Daha önce dizin tarafından işgal tüm alanı kazanmış. Bu alan daha sonra herhangi bir veritabanı nesnesi için kullanılabilir.
Bir dizin içinde bulunduğu filegroup çevrimdışıysa bırakılan veya salt okunur için ayarlama.
Dizin oluşturulmuş görünümün kümelenmiş bir dizin bırakılan her kümelendirilmemiş dizinleri ve aynı görünümde otomatik oluşturulan istatistikleri otomatik olarak bırakılır. El ile oluşturulan istatistikleri bırakılır değil.
Sözdizimitable_or_view_name**.**index_name geriye dönük uyumluluk için korunur. Geriye dönük uyumlu sözdizimi kullanarak bir xml dizin veya kayma dizin bırakılan.
Dizinleri 128 uzantılar ile ya da daha fazla düştü, Veritabanı Altyapısıgirmesini hareketi tamamlar sonra gerçek sayfa deallocations ve bunların ilişkili kilitleri kadar erteledi.
Bazen dizinler düştü ve yeniden yeniden düzenlemek veya yeniden dizin gibi yeni bir doldurma faktörü değeri uygulamak ya da sonra bir toplu yükleme verileri düzenleyebilirsiniz. Bunu kullanarak yapmak için alter INDEXözellikle kümelenmiş dizinler için daha verimli olur. alter DIZINI YENIDEN kümelendirilmemiş dizinleri yeniden oluşturuluyor yükü önlemek için en iyi duruma getirmeleri vardır.
drop INDEX ile seçeneklerini kullanma
Kümelenmiş bir dizin düşürdüğünüzde aşağıdaki dizin seçeneklerini ayarlayabilirsiniz: maxdop, ONLINE ve taşımak için.
Kümelenmiş dizin bırakın ve elde edilen tablo başka bir filegroup veya bölüm düzeni tek bir işlemle gider taşımak için kullanın.
ÇEVRİMİÇİ belirttiğinizde = on, sorgular ve temel veri değişiklikleri ve ilişkili kümelendirilmemiş dizinler değil drop INDEX hareket tarafından engellenir. Yalnızca bir kümelenmiş bir dizin çevrimiçi bir defada kesilmesini. ONLINE seçeneğini eksiksiz bir açıklaması için bkz: Index (Transact-sql) oluştur.
Dizin bir görünümü devre dışı bırakılır veya içeren Kümelenmiş bir dizin çevrimiçi bırakamazsınız text, ntext, image, varchar(max), nvarchar(max), varbinary(max), ya xmlyaprak düzeyi veri satırları sütunlara.
ÇEVRİMİÇİ kullanarak = on ve taşımak için seçenekleri ek geçici disk alanı gerektirir.
Dizin bırakılan sonra ortaya çıkan öbek görünür sys.indexes Katalog görünümü içinde null ile ad sütun. Tablo adını görüntülemek için üyelik sys.indexes ile sys.tables üzerine object_id. Bir örnek sorgu için bkz: örnek ö.
Çok işlemcili bilgisayarlarda çalışan SQL Server 2005 Enterprise Editionsonra drop INDEX gibi diğer sorgu yapacağını Kümelenmiş dizin bırakarak ile ilişkili işlemleri sıralamak ve tarama gerçekleştirmek için daha fazla işlemci kullanan veya maxdop dizin seçeneği belirterek drop INDEX deyimi çalıştırmak için kullanılan işlemci sayısını el ile yapılandırabilirsiniz. Daha fazla bilgi için, bkz. Parallel ındex işlemi yapılandırma.
Kümelenmiş bir dizin bırakılan sürece bölümleme şeması değiştirildiğinde ilgili yığın bölümleri kendi veri sıkıştırma ayarını korur. Bölümleme düzeni değişirse, tüm bölümlerin sıkıştırılmamış bir duruma yeniden oluşturulur (DATA_COMPRESSION = none). Kümelenmiş dizin bırakın ve bölümleme düzeni değiştirmek için aşağıdaki iki adımı gerektirir:
Kümelenmiş dizin bırakın.
Tablo, bir alter table kullanarak değiştirin... YENİDEN... sıkıştırma seçeneği belirtme seçeneği.
Kümelenmiş bir dizin bırakılan çevrimdışı kümelenmiş dizinler yalnızca üst düzeyleri kaldırılır; Bu nedenle, işlem oldukça hızlıdır. Kümelenmiş bir dizin çevrimiçi bırakılan SQL ServerAdım 1 için bir kez ve bir kez adım 2 için iki kez, yığın oluşturur. Veri sıkıştırma hakkında daha fazla bilgi için bkz: Veri Sıkıştırma.
xml dizinler
Eğer düşürdüğünüzde seçenekleri belirtilen bir xml dizin. Ayrıca, sen cant'kullanma table_or_view_name**.**index_name sözdizimi. Birincil xml dizin bırakılan tüm ilişkili ikincil xml dizinler otomatik olarak bırakılır. Daha fazla bilgi için, bkz. xml dizinleri (SQL Server).
Kayma dizinler
Kayma dizinler yalnızca tabloları üzerinde desteklenir. Kayma dizin düşürdüğünüzde, tüm seçenekleri belirtin veya kullanmak can't **.**index_name. Doğru sözdizimi aşağıdaki gibidir:
drop INDEX spatial_index_nameon spatial_table_name;
Kayma dizinler hakkında daha fazla bilgi için bkz: Kayma dizinler genel bakış.
İzinler
En azından drop INDEX yürütmek için 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 siliniyor
Aşağıdaki örnek, dizin siler IX_ProductVendor_ VendorID üzerine ProductVendortablosu.
USE AdventureWorks2012;
GO
DROP INDEX IX_ProductVendor_BusinessEntityID
ON Purchasing.ProductVendor;
GO
B.Çoklu dizinler bırakılıyor
Aşağıdaki örnek, tek bir işlem iki dizinleri siler.
USE AdventureWorks2012;
GO
DROP INDEX
IX_PurchaseOrderHeader_EmployeeID ON Purchasing.PurchaseOrderHeader,
IX_Address_StateProvinceID ON Person.Address;
GO
C.Kümelenmiş bir dizin çevrimiçi bırakarak ve maxdop seçeneği ayarlama
Aşağıdaki örnek ile kümelenmiş bir dizin siler ONLINEseçeneğini ayarlamak ONve MAXDOPiçin 8. TAŞIMAK için seçenek belirtilmemiş olduğundan, sonuç tablosuna dizin aynı filegroup depolanır.
[!NOT]
Bu örnek yalnızca çalıştırılabilir SQL Server 2005 Enterprise Editionveya üstü.
USE AdventureWorks2012;
GO
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials WITH (ONLINE = ON, MAXDOP = 2);
GO
D.Kümelenmiş bir dizin çevrimiçi bırakarak ve yeni bir filegroup tablo taşıma
Aşağıdaki örnek çevrimiçi kümelenmiş bir dizin siler ve elde edilen tablo (yığın) filegroup için hamle NewGroupkullanarak MOVE TOtümcesi. sys.indexes, sys.tables, Ve sys.filegroupsönce ve sonra hareket filegroups dizin ve tablo yerleşimi doğrulamak için sorgulanan katalog görünümleri.
USE AdventureWorks2012;
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 AdventureWorks2012
ADD FILEGROUP NewGroup;
ALTER DATABASE AdventureWorks2012
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
PRIMARY key veya UNIQUE kısıtlamaları oluşturma sonucunda oluşturulan dizinler, drop INDEX kullanarak bırakılan. Onlar alter table drop CONSTRAINT deyimini kullanarak bırakılır. Daha fazla bilgi için bkz: alter table.
Aşağıdaki örnek, kümelenmiş bir dizin PRIMARY key kısıtlaması ile sınırlamayı bırakarak siler. ProductCostHistoryTablo, hiçbir yabancı anahtar kısıtlamaları vardır. Yaptım, bu kısıtlamaları önce kaldırılması gerekir.
USE AdventureWorks2012;
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 dizin siliniyor
Aşağıdaki örnek xml dizin üzerinde düşünceye ProductModeltablosu.
USE AdventureWorks2012;
GO
DROP INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel;
GO
G.FILESTREAM tablo kümelenmiş bir dizin siliniyor
Aşağıdaki örnek çevrimiçi kümelenmiş bir dizin siler ve elde edilen tablo (yığın) ve FILESTREAM veri taşır MyPartitionSchemeher ikisini de kullanarak bölüm düzeni MOVE TOyan tümcesi ve FILESTREAM ONyan.
USE MyDatabase;
GO
DROP INDEX PK_MyClusteredIndex
ON dbo.MyTable
MOVE TO MyPartitionScheme
FILESTREAM_ON MyPartitionScheme;
GO
USE MyDatabase;
GO
DROP INDEX PK_MyClusteredIndex
ON dbo.MyTable
MOVE TO MyPartitionScheme
FILESTREAM_ON MyPartitionScheme;
GO
Ayrıca bkz.
Başvuru
alter PARTITION düzeni (Transact-sql)
PARTITION düzeni (Transact-sql) oluştur
KAYMA Index (Transact-sql) oluştur
xml Index (Transact-sql) oluştur