Aracılığıyla paylaş


Dizin anahtarlarının en büyük boyutu

When you design an index that contains many key columns, or large-size columns, calculate the size of the index key to make sure that you do not exceed the maximum index key size.SQL Server retains the 900-byte limit for the maximum total size of all index key columns.Bu kümelenmemiş dizinleri tanımında dahil sütunlarla dışlar.

Dizin anahtar boyutunu hesaplamak

Dizin anahtar boyutunu hesaplamak için aşağıdaki adımları izleyin.

  1. Dizin tabanlı tablo sütunları özelliklerini görüntüler.Bunu kullanarak yapmak için sys.columns Katalog görünümü.

  2. Her birinin uzunluğu toplamı sütun , tanımlı dizin anahtar.

    Örneğin, aşağıdaki deyim aggregates max_length sütunu sys.columns Katalog görünümü içinde belirtilen sütun için Person.Address tablo.

    USE AdventureWorks2008R2;
    GO
    SELECT SUM(max_length)AS TotalIndexKeySize
    FROM sys.columns
    WHERE name IN (N'AddressLine1', N'AddressLine2', N'City', N'StateProvinceID', N'PostalCode')
    AND object_id = OBJECT_ID(N'Person.Address');
    

    Not

    Bir tablo sütunu bir Unicode veri türü gibi olup olmadığını nchar veya nvarchar, görüntülenen sütun uzunluğu ise depolama uzunluğunu sütun.Bu iki kez create table içinde belirtilen karakter sayısıdır deyim.Önceki örnekte, City olarak tanımlanan bir nvarchar(30) veri türü; Bu nedenle, sütun depolama uzunluğu 60'tır.

  3. Toplam uzunluğu 900 bayttan küçük ise, sütun dizin anahtar sütunları katılabilir.Toplam uzunluğu 900 baytı aşıyorsa, seçenekler ve dikkate alınacak ek noktalar için aşağıdaki bilgileri gözden geçirin.

    create INDEX deyim dizin anahtar boyutunu hesaplamak için aşağıdaki algoritmalarını kullanır:

    • Tüm boyut anahtar sütunlar artı tüm değişken anahtar sütunları create INDEX'de belirtilen en büyük boyutu sabit, deyim dan 900 bayt, create INDEX deyim uyarı veya hata başarılı bir şekilde tamamlanır.

    • create INDEX deyimini anahtar sütunlarının tümünü boyutunu sabit artı 900 tüm değişken anahtar sütunlarının en fazla boyutu aşıyor, ancak tüm sabit anahtar sütun boyutu artı değişken anahtar sütunlarının en az boyutu 900'den az olan, bunu belirtirse, izleyen bir INSERT veya update deyim başarısız olabilir bir uyarı ile başarılı 900 bayt'tan daha büyük bir anahtar değeri oluşturan değerler.create INDEX deyim ne zaman başarısız varolan veri satırları içinde tablo 900 bayt'tan daha büyük bir anahtar değerlerine sahip.900 Bayttan daha uzun bir anahtar değeri oluşturan veri değerleri belirten bir sonraki Ekle veya güncelleştir deyim başarısız olur.

    • Anahtar sütunlar artı en küçük boyut içinde belirtilen tüm değişken sütun boyutu tüm sabit create INDEX deyimini 900 baytı aşıyor, create INDEX deyim başarısız olur.

    Aşağıdaki tablo , karşılayan veya aşan en fazla dizin anahtar boyutu sınırlamaları dizinler oluşturma sonuçlarını özetler.

Değişken uzunlukta en az boyutunu sütun(s) + sabit veri boyutunu sütun(s)

En büyük boyutu, değişken uzunluklu sütun(s) + sabit veri boyutunu sütun(s)

MAK için varolan satırların * dizin anahtar sütun uzunlukları toplamı

Dizin oluşturulmuş

İleti türü

INSERT veya update çalıştırma -saat nedeni, büyük boyutlu dizin anahtar değerini kullanarak hata

> 900 bayt

İlgisi olmayan

İlgisi olmayan

Hayır

Hata

Dizin hata üretmek için hazır.

<= 900 bayt

<= 900 bayt

İlgisi olmayan

Evet

Hiçbiri

No

<= 900 bayt

> 900 bayt

<= 900 bayt

Evet

Uyarı

Yalnızca geçerli tüm dizin sütun uzunlukları toplamı 900 bayttan daha büyükse.

<= 900 bayt

> 900 bayt

> 900 bayt

Hayır

Hata

Dizin hata üretmek için hazır.

* Hiçbiri tablodaki satırların saat create INDEX deyim yürütülmeden dizin anahtar değerleri olan toplam uzunlukları 900 baytı aşamaz olabilir.

Boyut sınırları önlemek için sütunlar kullanma

Geçerli dizin boyutu sınırlamaları 16 anahtar sütun en fazla ve en fazla dizin anahtar boyutu 900 bayt önlemek için kümelenmemiş dizin anahtarı olmayan sütunlar içerebilirsiniz.The SQL Server Veritabanı Altyapısı does not consider nonkey columns when calculating the number of index key columns or the total size of the index key columns.İçinde bir kümelenmemiş dizin dahil sütunlarla dizin anahtar sütunları toplam boyutu 900 bayt ile sınırlıdır.Include yan tümce tümce tümcesinde belirlenen sütun boyutu tarafından yalnızca tüm sütunlarla toplam boyutu sınırlıdır; Örneğin, varchar(max) sınırlı sütunlar2 gb. için Include yan tümce tümce tümcesindeki sütun dışındaki tüm veri türleri olabilir text, ntext, ve image.