Aracılığıyla paylaş


xml Index (Transact-SQL) oluştur

Belirtilen tabloüzerinde bir xml dizin oluşturur.tabloveri önce dizin oluşturulabilir.xml dizinleri, bir tam veritabanı adı belirterek başka bir veritabanındaki tablolarda oluşturulabilir.

Not

İlişkisel bir dizin oluşturmak için bkz: CREATE INDEX (Transact-SQL).Kayma dizin oluşturma hakkında daha fazla bilgi için bkz: KAYMA Index (Transact-SQL) oluştur.

Konu bağlantısı simgesiTransact-SQL sözdizimi 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
    Bir xml dizin oluşturur üzerinde belirtilen xml sütun.BİRİNCİL belirtildiğinde, bir kümelenmiş dizin kümelemeanahtar kullanıcı tablo ve xml düğüm tanıtıcısından biçimlendirilmiş kümelenmiş anahtar oluşturulur. Her tablo 249'a kadar kadar xml dizinler olabilir.xml dizin oluştururken aşağıdakilere dikkat edin:

    • kümelenmiş dizin , birincil anahtar kullanıcı tabloüzerinde bulunması gerekir.

    • kümelemeanahtar kullanıcı tablo 15 sütunları sınırlıdır.

    • Her tabloxmlsütun bir birincil xml dizin ve birden çok ikincil xml dizinler olabilir.

    • Birincil xml dizin üzerinde bir xml sütun sütunikincil bir xml dizin oluşturulmadan önce bulunmalıdır.

    • Yalnızca tek bir xml dizin oluşturulabilir xml sütun.Üzerinde olmayan bir xml dizin oluşturulamıyor-xml sütunve can oluşturduğunuz ilişkisel dizin üzerinde bir xml sütun.

    • Üzerinde birincil ya da ikincil bir xml dizin oluşturamazsınız bir xmlbir tablogörünümündesütun -değerli değişkeni ile xml sütunlar veya xml türü değişkenleri.

    • Bir hesaplanan üzerinde birincil xml dizin oluşturamazsınız xml sütun.

    • set seçenek ayarları için gerekli olanlar dizin oluşturulmuş görünümler ve hesaplanan sütun dizinleri aynı olması gerekir.ARITHABORT seçeneği küme için bir xml dizin oluşturulduğunda ve eklerken, silme veya değerleri güncelleştirme özellikle olmalıdır xml sütun.Daha fazla bilgi için, bkz. Sonuçları etkileyen seçeneklerini ayarlama.

    Daha fazla bilgi için, bkz. xml veri türü sütun dizinlerde.

  • index_name
    Dizin 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: #, ##, @, or @@.

  • xml_column_name
    İş xml sütun dizini dayalı.Tek bir xml sütun içinde tek bir xml dizin tanımı; belirtilebilir Ancak, birden çok ikincil xml dizinler üzerinde oluşturulabilir bir xml sütun.

  • XML DİZİNİ KULLANARAKxml_index_name
    İkincil bir xml dizin oluşturmak için birincil xml dizin belirtir.

  • İÇİN {DEĞER | YOL | ÖZELLİK}
    İkincil xml dizin türünü belirtir.

    • VALUE
      İkincil bir xml dizin anahtar sütunları düğüm değeri ve yol) birincil xml dizini olduğu sütunlar oluşturur.

    • YOL
      Sütunları birincil xml dizin yol değerlerini ve düğüm üzerinde oluşturulmuş ikincil bir xml dizin oluşturur.İkincil dizin yolu yol ve düğüm yollarını ararken, verimli yararlanılabileceğini izin anahtar sütunları değerlerdir.

    • ÖZELLİĞİ
      BA temel tablobirincil anahtar olduğu birincil xml dizin sütunları (BA, yol ve düğüm değeri) ikincil bir xml dizin oluşturur.

<Nesne>:: =

Dizini oluşturulacak tam veya nonfully nitelikli nesnedir.

  • database_name
    Veritabanının adıdır.

  • schema_name
    tablo ait olduğu şema addır.

  • table_name
    tablo sıralanacak adıdır.

<xml_index_option> :: =

Dizin oluşturduğunuzda kullanılacak seçenekleri belirtir.

  • PAD_INDEX = {on | OFF }
    Dizin doldurmabelirtir.Varsayılan kapalı'dır.

    • ON
      Tarafından belirtilen boş alan yüzdesini fillfactor dizini Orta -düzey sayfalar için uygulanır

    • Kapalı veya fillfactor belirtilmezse
      Orta -düzey sayfalar kapasite yakınında doldurulmuş, en büyük boyutu en az bir satır için yeterli boşluk bırakarak dizini, küme , ara sayfalarında anahtarları düşünmeden olabilir.

    Yalnızca FILLFACTOR belirtilen, PAD_INDEX tarafından FILLFACTOR belirtilen yüzde kullandığından PAD_INDEX seçenek yararlı olacaktır.İçin FILLFACTOR belirtilen yüzde bir satır için olanak verecek kadar büyük değilse, Veritabanı Altyapısı dahili olarak izin vermek için en az yüzde geçersiz kılarBir Ara dizin sayfası satır sayısı hiçbir zaman değeri ikiden azsa, nasıl düşük değeri ne olursa olsun değildir fillfactor.

  • FILLFACTOR **=**fillfactor
    Nasıl tam olarak gösteren bir yüzdesini belirtir Veritabanı Altyapısı olun yaprak düzey her dizin sayfası sırasında dizin oluşturma veya yeniden oluşturma.fillfactor1-100 bir tamsayı değeri olmalıdır.Varsayılan değer 0'dir.fillfactor 100 Ya da 0, Veritabanı Altyapısı yaprak sayfalar dolu kapasite dizinler oluşturur

    Not

    Dolgu faktörü 0 ve 100 tüm açılardan aynı değerlerdir.

    Yalnızca dizin oluşturulduğunda veya yeniden FILLFACTOR ayar uygulanır.Veritabanı Altyapısı Dinamik olarak değil tutmak belirtilen yüzdesini boş sayfaları.doldurma faktörü ayarını görüntülemek için sys.indexes Katalog görünümü.

    Önemli notÖnemli

    100'den küçük olduğundan verileri kapladığı depolama alanı miktarını etkiler FILLFACTOR ile kümelenmiş dizin oluşturma Veritabanı Altyapısı kümelenmiş dizinoluşturduğunda, verileri yeniden dağıtır.

    Daha fazla bilgi için, bkz. Dolgu etmeni.

  • SORT_IN_TEMPDB = {on | OFF }
    Geçici sıralama sonuçlar depolanacağı belirtir tempdb.Varsayılan kapalı'dır.

    • ON
      Dizin oluşturmak için kullanılan ara sıralama sonuçlar depolanmış olan tempdb.Bu, dizin oluşturmak için gereken saat azaltabilir tempdb bir farklı küme , kullanıcı veritabanıdisklerden açıktır.Ancak, bu dizin oluşturma sırasında kullanılan disk alanı miktarını artırır.

    • KAPALI
      Ara sıralama sonuçlar dizini ile aynı veritabanında depolanır.

    kullanıcı veritabanı dizini oluşturmak için gereken alan ek olarak tempdb Ara sıralama sonuçlarbarındırmak için ek alan hakkında aynı miktarda olması gerekir.Daha fazla bilgi için, bkz. tempdb ve dizin oluşturma.

  • IGNORE_DUP_KEY **=**off
    Dizin türü hiçbir zaman benzersiz olduğundan xml dizinler için hiçbir etkisi yoktur.Bu seçenek açık küme yapmak, veya bildirimin bir hata ortaya çıkar.

  • DROP_EXISTING = {on | OFF }
    Adlandırılmış, xml dizin preexisting bırakılan yeniden ve olduğunu belirtir.Varsayılan kapalı'dır.

    • 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ümleme düzeniveya dizin seçeneklerini belirtebilirsiniz.

    • KAPALI
      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 bir xml dizin veya tam tersi şekilde 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 , SQL Server, çevrimiçi dizin yapılar için xml dizinler desteklenmezBu seçeneği küme açık bir xml dizin için ise, bir hata ortaya çıkar.Ya da çevrimiçi seçeneğini veya küme çevrimiçi off atlayın.

    tabloşema değişikliği (Sch-m) kilit oluşturan, yeniden oluşturur veya bir xml dizin düşünceye çevrimdışı dizin işlemi kapsar.Bu tüm kullanıcı erişimi için temel tablo işlemi süresince önler.

    Not

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

  • ALLOW_ROW_LOCKS = { ON | OFF}
    Satır kilitleri izin verilip verilmeyeceğini belirtir.Varsayılan açık'tır.

    • ON
      Satır kilitleri dizin erişirken izin verilir.Veritabanı Altyapısı Satır kilitleri ne zaman kullanılacağını belirler.

    • KAPALI
      Satır kilitleri kullanılmaz.

  • allow_page_locks = { on | OFF}
    sayfa kilitlemeleri izin verilip verilmeyeceğini belirtir.Varsayılan açık'tır.

    • ON
      Dizine erişirken, sayfa kilitlemeleri izin verilir.Veritabanı Altyapısı sayfa kilitlemeleri ne zaman kullanılacağını belirler.

    • KAPALI
      Sayfa kilitlemeleri kullanılmaz.

  • 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. 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

    create INDEX xml maxdop seçeneği sözdizimi kurallarına göre birincil xml dizin için tüm xml dizinler için desteklenir ama yalnızca tek işlemci kullanır.

    max_degree_of_parallelismaşağıdakilerden biri olabilir:

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

    • >1
      Belirtilen veya daha az geçerli sistem iş yükünün üzerinde temel bir paralel dizin işleminde kullanılan işlemcilerin en fazla sayısını 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.

Açıklamalar

Hesaplanan sütunlar türetilen xml veri türleri dizinlenebilir anahtar veya gelen anahtarı olmayan sütun olarak hesaplanan sütun veri türü dizin anahtar sütun veya anahtarı olmayan sütunolarak izin verilen olduğu sürece.Bir hesaplanan üzerinde birincil xml dizin oluşturamazsınız xml sütun.

xml dizinler hakkında bilgi görüntülemek için sys.xml_indexes Katalog görünümü.

xml dizinler hakkında daha fazla bilgi için bkz: xml veri türü sütun dizinlerde.

Dizin oluşturma hakkında ek açıklamalar

Dizin oluşturma hakkında daha fazla bilgi için "Uyarılar" konusuna bakın. bulunan bölümünde CREATE INDEX (Transact-SQL).

Örnekler

A.Birincil xml dizin oluşturma

Aşağıdaki örnek bir birincil xml dizin oluşturur CatalogDescription sütun Production.ProductModel tablo.

USE AdventureWorks2008R2;
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.İkincil bir xml dizin oluşturma

Aşağıdaki örnek ikincil bir xml dizin oluşturur CatalogDescription sütun Production.ProductModel tablo.

USE AdventureWorks2008R2;
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