xml Index (Transact-sql) oluştur
xml dizin üzerinde belirtilen bir tablo oluşturur. Tabloda veri önce dizin oluşturulabilir. xml dizinler, nitelikli veritabanı adı belirterek başka bir veritabanındaki tablolarda oluşturulabilir.
[!NOT]
İlişkisel bir dizin oluşturmak için bkz: Index (Transact-sql) oluştur. Kayma dizin oluşturma hakkında daha fazla bilgi için bkz: KAYMA Index (Transact-sql) oluştur.
Transact-SQL Sözdizim Kuralları
Sözdizimi
Create XML Index
CREATE [ PRIMARY ] XML INDEX index_name
ON <object> ( xml_column_name )
[ USING XML INDEX xml_index_name
[ FOR { VALUE | PATH | PROPERTY } ] ]
[ WITH ( <xml_index_option> [ ,...n ] ) ]
[ ; ]
<object> ::=
{
[ database_name. [ schema_name ] . | schema_name. ]
table_name
}
<xml_index_option> ::=
{
PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = OFF
| DROP_EXISTING = { ON | OFF }
| ONLINE = OFF
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
}
Bağımsız değişkenler
[BİRİNCİL] XML
Belirtilen xml dizin oluşturur xmlsütun. BİRİNCİL belirtildiğinde, kümelenmiş bir dizin xml düğüm tanımlayıcı ve kullanıcı tablosunun kümeleme anahtarından oluşan Kümelenmiş anahtar oluşturulur. Her tabloda kadar 249 xml dizinler olabilir. xml dizin oluştururken aşağıdakileri unutmayın:Kümelenmiş bir dizin kullanıcı tablo birincil anahtarı üzerinde bulunması gerekir.
Kullanıcı tablosunun kümeleme anahtarı 15 sütunları sınırlıdır.
Her xmltablodaki sütunu bir birincil xml dizin ve birden çok ikincil xml dizinler olabilir.
Birincil xml dizin üzerinde bir xmlsütun sütun ikincil xml dizin oluşturulmadan önce mevcut gerekir.
Yalnızca tek bir xml dizin oluşturulabilir xmlsütun. Olmayan bir xml dizin oluşturamazsınız- xml sütunu, ne olabilir, oluşturduğunuz ilişkisel bir dizin üzerinde bir xmlsütun.
Üzerinde birincil veya ikincil bir xml dizin oluşturamazsınız bir xmlbir görünüm, tablo değerli bir değişkenle sütununda xmlsütun, ya da xmldeğişkenler türü.
Hesaplanan birincil xml dizin oluşturamazsınız xmlsütun.
set seçenek ayarları için gerekli olanlar dizinlenmiş görünümler ve hesaplanan sütun dizinleri aynı olmalıdır. Özellikle seçeneği ARITHABORT on olarak xml dizin oluşturulduğunda ve ekleme, silme veya güncelleştirme olarak değer ayarlanmalıdır xmlsütun.
Daha fazla bilgi için, bkz. xml dizinleri (SQL Server).
index_name
Dizinin adıdır. Dizin adları tablo içinde benzersiz olmalıdır ancak bir veritabanı içinde benzersiz olması gerekmez. Dizin adları kuralları izleyin gerekir tanımlayıcıları.Birincil xml dizin adları şu karakterleri ile başlatılamıyor: #, #, @, ya @.
xml_column_name
İse xmlsütun dizini temel. Tek bir xmlsütunu tek bir xml dizin tanımı; belirtilebilir Ancak, birden çok ikincil xml dizinler üzerinde oluşturulan bir xmlsütun.XML DİZİNİ KULLANARAKxml_index_name
Ikincil bir xml dizin oluşturmak için birincil xml dizin belirtir.İÇİN {VALUE | YOL | ÖZELLİK}
İkincil xml dizin türünü belirtir.VALUE
Ikincil bir xml dizin anahtar sütunları nerede (düğüm değeri ve yolu) sütunlar oluşturur birincil xml dizin.YOLU
Sütunları yolu değerlerini ve düğüm değerlere birincil xml dizin oluşturulmuş ikincil bir xml dizin oluşturur. YOLU ikincil dizin yolu ve düğüm etkili yollarını ararken arama izin anahtar sütunları değerlerdir.ÖZELLİĞİ
Ikincil bir xml dizin pk temel tablonun birincil anahtarı olduğu birincil xml dizin sütunları (BA, yol ve düğüm değeri) oluşturur.
<nesne>:: =
Dizin oluşturulacak tam veya nonfully nitelikli nesnedir.
database_name
Veritabanının adıdır.schema_name
Tablonun ait olduğu şemanın adıdır.table_name
İndekslenecek tablonun adıdır.
<xml_index_option> :: =
Dizin oluşturduğunuzda kullanılacak seçenekleri belirtir.
PAD_INDEX = {on | OFF }
Dizin dolgusunu belirtir. Varsayılan değer OFF'tur.ON
Tarafından belirtilen boş alan yüzdesini fillfactordizin Orta düzey sayfalar için uygulanır.KAPALI veya fillfactorbelirtilmemiş
Orta düzey sayfalar kapasite near doldurulur, en büyük boyutu en az bir satır için yeterli boşluk bırakarak dizin, ara sayfalarında anahtarları kümesi düşünüyor olabilir.
Sadece FILLFACTOR belirtilen PAD_INDEX FILLFACTOR tarafından belirtilen yüzde kullandığından PAD_INDEX seçeneği yararlıdır. FILLFACTOR için belirtilen yüzde bir satır için izin verecek kadar büyük değilse, Veritabanı Altyapısıdahili olarak minimum izin yüzde geçersiz kılar. Bir ara dizin sayfasındaki satır sayısı hiç az iki, ne olursa olsun değerinin ne kadar düşük olduğunu fillfactor.
FILLFACTOR **=**fillfactor
Nasıl tam gösteren bir yüzdesini belirtir Veritabanı Altyapısıdizin oluşturma sırasında her dizin sayfasının yaprak düzeyini yapmak veya yeniden. fillfactorbir tamsayı değeri 1 ile 100 olmalıdır. Varsayılan değer 0'dır. Eğer fillfactor100 ya da 0, Veritabanı AltyapısıKapasite dolu yaprak sayfaları dizinleri oluşturur.[!NOT]
Doldurma faktörü değerleri 0 ve 100 her açıdan aynıdır.
FILLFACTOR ayar, yalnızca dizin oluşturulduğunda veya yeniden uygulanır. Veritabanı AltyapısıDeğil dinamik tutmak boş sayfalarda belirtilen yüzdesi. Dolgu etmeni ayarını görüntülemek için sys.indexes Katalog görünümü.
Önemli Kümelenmiş dizin oluşturma bir FILLFACTOR ile 100'den küçük verileri kapladığı için depolama alanı miktarını etkiler Veritabanı AltyapısıKümelenmiş dizin oluşturduğunda, verileri yeniden dağıtır.
Daha fazla bilgi için, bkz. Bir dizin için dolgu etmeni belirleme.
SORT_IN_TEMPDB = {on | OFF }
Geçici sıralama sonuçları depolamak belirtir tempdb. Varsayılan değer OFF'tur.ON
Dizin oluşturmak için kullanılan ara sıralama sonuçları depolanır tempdb. Bu, dizin oluşturmak için gereken süreyi azaltmak tempdb kullanıcı veritabanı disklerden farklı bir dizi olduğunu. Ancak, dizinin oluşturulması sırasında kullanılan disk alanı miktarını da artırır.OFF
Ara sıralama sonuçları, dizin ile aynı veritabanında depolanır.
Kullanıcı veritabanında bir dizin oluşturmak için gereken alan ek olarak tempdb ara sıralama sonuçları tutmak için ek alan hakkında aynı miktarda olması gerekir. Daha fazla bilgi için, bkz. SORT_IN_TEMPDB seçeneği için dizinler.
IGNORE_DUP_KEY **=**kapatma
Dizin türü asla benzersiz olduğundan, xml dizinler için hiçbir etkisi olmaz. Bu seçenek on olarak ayarlamayın veya başka bir hata oluşturulur.DROP_EXISTING = {on | OFF }
Adlı, xml dizin preexisting bırakılan yeniden olduğunu belirtir. Varsayılan değer OFF'tur.ON
Varolan dizin bırakılan ve yeniden. Belirtilen dizin adı şu anda varolan bir dizini ile aynı olmalıdır; Ancak, Dizin tanımı değiştirilebilir. Örneğin, farklı sütunlar, sıralama düzeni, bölüm düzenini veya dizin seçeneklerini belirtebilirsiniz.OFF
Belirtilen dizin adı zaten varsa bir hata görüntülenir.
DROP_EXISTING kullanarak dizin türü değiştirilemez. Ayrıca, birincil xml dizin ikincil xml dizin veya tersi tanımlanamaz.
ONLINE **=**OFF
Temel alınan tablo ve ilişkili dizinler sorguları ve veri değişikliği dizin işlemi sırasında kullanılamaz olduğunu belirtir. Bu sürümünde SQL Server, çevrimiçi dizin yapıları için xml dizinler desteklenmez. Bu seçenek için bir xml dizin on olarak ayarlanmışsa, bir hata oluşturulur. ONLINE seçeneğini atlayın ya da ONLINE için off ayarlayın.Bir çevrimdışı dizin işlemi oluşturan, yeniden oluşturur veya sıska bir xml dizin tablo şema değişikliği (Sch-m) kilit satın aldı. Bu, işlem süresi boyunca alttaki tabloya tüm kullanıcı erişimini engeller.
[!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.
ALLOW_ROW_LOCKS = { ON | KAPALI}
Satır kilidi kullanılıp kullanılamadığını belirtir. ON varsayılan değerdir.ON
Dizine erişilirken satır kilitleri kullanılabilir. Satır kilitlerinin ne zaman kullanıldığını Veritabanı Altyapısı belirler.OFF
Satır kilitleri kullanılmaz.
ALLOW_PAGE_LOCKS = { ON | OFF }
Sayfa kilidi kullanılıp kullanılamadığını belirtir. ON varsayılan değerdir.ON
Sayfa kilitlemeleri dizin erişirken izin verilir. Veritabanı AltyapısıNe zaman sayfa kilitleri kullanılır belirler.OFF
Sayfa kilitleri kullanılmaz.
maxdop **=**max_degree_of_parallelism
Geçersiz kılan Maksimum ölçüde parallelism sunucu yapılandırma seçeneği yapılandırmakdizini işlem süresi için yapılandırma seçeneği. 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 seçenek sözdizimsel birincil xml dizin için tüm xml dizinler için desteklenir, ancak xml dizin oluşturma yalnızca tek işlemci kullanır.
max_degree_of_parallelismaşağıdakilerden biri olabilir:
1
Paralel plan üretimini baskılar.>1
Paralel dizin işlemi için belirtilen veya geçerli sistem yüküne göre daha az kullanılan işlemci sayısını 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 Microsoft SQL Server sürümünde bulunmaz. Sürümü tarafından desteklenen özellikleri listesi için SQL Serverbakın SQL Server 2012 Sürümleri Tarafından Desteklenen Özellikler.
Açıklamalar
Hesaplanan sütunlar türetilen xmlveri türleri olabilir dizin anahtar ya da dahil bir nonkey sütun olarak hesaplanan sütun veri türü bir dizin anahtar sütunu veya nonkey sütun olarak izin verilen olduğu sürece. Hesaplanan birincil xml dizin oluşturamazsınız xmlsütun.
xml dizinler hakkında bilgi görüntülemek için kullanınsys.xml_indexesKatalog Katalog görünümü.
xml dizinler hakkında daha fazla bilgi için bkz: xml dizinleri (SQL Server).
Ek açıklamalar dizin oluşturma
Dizin oluşturma hakkında daha fazla bilgi için "Uyarılar" konusuna bakın. bölüm içinde Index (Transact-sql) oluştur.
Örnekler
A.Birincil xml dizin oluşturma
Aşağıdaki örnek oluşturur birincil xml dizin CatalogDescriptionsütununda Production.ProductModeltablosu.
USE AdventureWorks2012;
GO
IF EXISTS (SELECT * FROM sys.indexes
WHERE name = N'PXML_ProductModel_CatalogDescription')
DROP INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel;
GO
CREATE PRIMARY XML INDEX PXML_ProductModel_CatalogDescription
ON Production.ProductModel (CatalogDescription);
GO
B.Ikincil bir xml dizin oluşturma
Aşağıdaki örnek ikincil bir xml dizin oluşturur CatalogDescriptionsütununda Production.ProductModeltablosu.
USE AdventureWorks2012;
GO
IF EXISTS (SELECT name FROM sys.indexes
WHERE name = N'IXML_ProductModel_CatalogDescription_Path')
DROP INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel;
GO
CREATE XML INDEX IXML_ProductModel_CatalogDescription_Path
ON Production.ProductModel (CatalogDescription)
USING XML INDEX PXML_ProductModel_CatalogDescription FOR PATH ;
GO
Ayrıca bkz.
Başvuru
PARTITION FUNCTION (Transact-sql) oluştur
PARTITION düzeni (Transact-sql) oluştur
KAYMA Index (Transact-sql) oluştur
İstatistikler (Transact-sql) oluştur
dbcc SHOW_STATISTICS (Transact-sql)
kullanınsys.xml_indexesKatalog (Transact-sql)