alter INDEX (Transact-SQL)

Varolan bir tablo veya Görünüm dizin değiştirir (ilişkisel veya xml) devre dışı bırakma, yeniden inşa etmek ya da; dizini yeniden düzenleme veya dizin seçeneklerini ayarlama.

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

Sözdizimi

ALTER INDEX { index_name | ALL }
    ON <object>
    { REBUILD 
        [ [PARTITION = ALL]
          [ WITH ( <rebuild_index_option> [ ,...n ] ) ] 
          | [ PARTITION = partition_number 
                [ WITH ( <single_partition_rebuild_index_option>
                        [ ,...n ] )
                ] 
            ]
        ]
    | DISABLE
    | REORGANIZE 
        [ PARTITION = partition_number ]
        [ WITH ( LOB_COMPACTION = { ON | OFF } ) ]
  | SET ( <set_index_option> [ ,...n ] ) 
    }
[ ; ]

<object> ::=
{
    [ database_name. [ schema_name ] . | schema_name. ]
    table_or_view_name
}

<rebuild_index_option > ::=
{
    PAD_INDEX = { ON | OFF }
  | FILLFACTOR = fillfactor 
  | SORT_IN_TEMPDB = { ON | OFF }
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | ONLINE = { ON | OFF } 
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE } 
     [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
     [ , ...n ] ) ]
}
<range> ::= 
<partition_number_expression> TO <partition_number_expression>
}

<single_partition_rebuild_index_option> ::=
{
    SORT_IN_TEMPDB = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE | ROW | PAGE } }
}

<set_index_option>::=
{
    ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
}

Bağımsız değişkenler

  • index_name
    Dizin adıdır.Dizin adları, bir tablo veya görünüm içinde benzersiz olmalıdır ancak bir veritabanı içinde benzersiz olması gerekmez.Dizin adları kuralları izleyin gerekir tanımlayıcıları.

  • ALL
    tablo veya Görünüm dizin türü ne olursa olsun ile ilişkili tüm dizinler belirtir.Tüm belirtilmesi deyim bir çevrimdışı veya salt okunur dosya grubu içinde bir veya daha fazla dizin veya belirtilen işlem üzerinde bir veya daha fazla dizin türleri verilmez başarısız olmasına neden olur.Aşağıdaki tablo dizin işlemleri ve dizin türü izin verilmedi.

    Tüm bu işlemle belirtme

    Bir veya daha fazla tablo varsa, başarısız

    YENİDEN ÇEVRİMİÇİ ON İLE =

    xml dizini

    Kayma dizini

    Büyük nesne veri sütunları yazın: image, text, ntext, varchar(max), nvarchar(max), varbinary(max), and xml

    REBUILD BÖLÜM =partition_number

    Nonpartitioned dizin, xml dizinler, kayma dizin veya devre dışı dizin

    YENİDEN DÜZENLEME

    Dizinler allow_page_locks küme için off

    YENİDEN DÜZENLE BÖLÜM =partition_number

    Nonpartitioned dizin, xml dizinler, kayma dizin veya devre dışı dizin

    IGNORE_DUP_KEY ON =

    Kayma dizini

    xml dizini

    ÇEVRİMİÇİ AÇIK =

    Kayma dizini

    xml dizini

    all belirtildiğinde bölümüyle = partition_number, tüm dizinleri hizalı gerekir.Yani, bunlar eşdeğer bölüm işlevlerine göre bölümlendirilir.TÜM bölüm ile kullanarak neden tüm dizin bölümleri ile aynı partition_number yeniden veya yeniden düzenlenmesi için.Bölümlenmiş dizinler hakkında daha fazla bilgi için bkz: Bölümlenmiş tablolar ve dizinler.

  • database_name
    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.Bir nesne üzerinde dizinler raporunu görüntülemek için kullanın sys.indexes Katalog görünümü.

  • YENİDEN [WITH (<)rebuild_index_option> [ ,... n]) ]
    Aynı sütunlara dizin türü, benzersizliği öznitelikve sıralama düzenikullanarak dizin derlenecek belirtir.Bu yan tümce eşittir dbcc dbreindex.devre dışı dizinyeniden oluşturma sağlar.kümelenmiş dizin yeniden oluşturuluyor değil yeniden ilişkili kümelenmemiş dizinleri sürece tüm belirtilen anahtar sözcük.Varolan bir dizini dizin seçenekleri belirtilmezse, saklanan değerleri seçeneği sys.indexes uygulanır.Değeri saklı değil herhangi bir dizin seçeneği için sys.indexes, seçenek bağımsız değişkeni tanımında belirtilen varsayılan uygulanır.

    Ne zaman, yeniden xml dizinler veya kayma dizin, Seçenekler Çevrimiçi on = ve IGNORE_DUP_KEY on = geçerli değil.

    TÜM belirtilen ve bir yığın temel tablo ise, yeniden oluşturma işlemi tabloüzerinde etkisi yoktur.' % S'tablo tablo ile ilgili tüm kümelenmemiş dizinler yeniden oluşturulur.

    Veritabanı kurtarma modelini bulk-logged veya basit küme , yeniden oluşturma işlemi en az kaydedilebilir.Daha fazla bilgi için, bkz. Dizin işlemleri için bir kurtarma modeli seçme.

    Not

    Birincil xml dizini yeniden oluşturduğunuzda, temel kullanıcı tablo dizini işlem süresi için kullanılamaz.

  • BÖLÜM
    Bir dizinin yalnızca bir bölümü yeniden veya yeniden düzenlenmesi gerektiğini belirtir.BÖLÜMLEME belirtilemez, index_name bölümlenmiş dizindeğil.

    BÖLÜM tüm bölümleri tüm yeniden oluşturmayı =.

  • partition_number
    Yeniden veya yeniden düzenlenmesi için bir bölümlenmiş dizin bölüm sayısıdır.partition_numberdeğişkenleri başvuruda bulunabilir bir sabit ifade edilir.Bu kullanıcı tanımlı tür değişkenleri veya işlevleri ve kullanıcı tanımlı işlevler içerir, ancak başvuramaz bir Transact-SQL deyim.partition_number mevcut olmalıdır veya deyim başarısız olur.

  • İLE (<)single_partition_rebuild_index_option>)
    DATA_COMPRESSION SORT_IN_TEMPDB ve maxdop olan tek bir bölümü yeniden oluşturduğunuzda seçenekler belirtilebilir (bölüm = n).xml dizinleri bir tek bölümü yeniden oluşturma işleminde belirtilemez.

    bölümlenmiş dizin yeniden oluşturuluyor çevrimiçi gerçekleştirilemez.Bu işlem sırasında tüm tablo kilitli.

  • DEVRE DIŞI BIRAKMA
    Dizin tarafından kullanılamaz ve devre kullanım olarak işaretler Veritabanı Altyapısı.Herhangi bir dizin devre dışı bırakılabilir.devre dışı dizin dizin tanımı temel dizin verisi olmayan sistem Kataloğu kalır.kümelenmiş dizin devre dışı bırakma için temel tablo verilerini kullanıcı erişimini engeller.Bir dizinini etkinleştirmek için alter dizin yeniden veya DROP_EXISTING ile dizin oluşturmak kullanın.Daha fazla bilgi için, bkz. Dizinler devre dışı bırakma.

  • YENİDEN DÜZENLEME
    Dizin yaprak düzey yeniden belirtir.Bu yan tümce eşittir dbcc indexdefrag.alter dizin yeniden Düzenle deyim her zaman çevrimiçi gerçekleştirilir.Yani uzun süreli engelleme tablo kilitleri tutulmadı ve sorguları veya güncelleştirmeler için temel tablo alter dizin yeniden düzenle hareket sırasında devam edebilirsiniz.devre dışı dizin veya allow_page_locks küme için off taşıyan bir dizin yeniden düzenle belirtilemez.

  • İLE ( ) LOB_COMPACTION = { on | OFF } )
    Büyük nesne (lob) veri içeren tüm sayfaları dursa belirtir.The LOB data types are image, text, ntext, varchar(max), nvarchar(max), varbinary(max), and xml.Bu veri sıkıştırma disk alanı kullanımını artırabilir.Varsayılan açık'tır.

    • ON
      Büyük nesne veri içeren tüm sayfaları dursa.

      Belirtilen kümelenmiş dizin yeniden düzenleme kümelenmiş diziniçerdiği tüm lob sütunları düzenler.kümelenmemiş dizin yeniden düzenleme, anahtarı olmayan (dahil) sütunlar dizin içindeki tüm lob sütunları düzenler.Daha fazla bilgi için, bkz. Eklenen sütunlar ile dizin oluşturmak.

      Tüm belirtilirse, belirtilen tablo veya görünümü ile ilişkili tüm dizinler yeniden düzenlenmesi ve kümelenmiş dizin, temel tabloveya dahil sütunlarla kümelenmemiş dizin ile ilişkili tüm lob sütunları dursa.

    • KAPALI
      Büyük nesne verisi içeren sayfaları dursa değil.

      Kapalı bir yığın üzerinde etkisi yoktur.

    LOB_COMPACTION yan tümce lob sütunları yok sayılır.

  • SET ( <set_index option> [ ,... n] )
    Dizini yeniden düzenleme ve yeniden inşa etmek isterse dizin seçeneklerini belirtir.KÜMESİ için bir devre dışı dizinbelirtilemez.

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

    • ON
      Orta -düzey sayfalara dizin FILLFACTOR belirtilen boş alan yüzdesini uygulanır.FILLFACTOR aynı anda belirtilmezse saat PAD_INDEX küme on, depolanan doldurma faktörü değeri olan sys.indexes kullanılır.

    • Kapalı veya fillfactor belirtilmezse
      Orta -düzey sayfalar kapasite yakınında için doldurulur.Bu dizin, küme Ara sayfalarında anahtarların bağlı olabileceği en büyük boyutu en az bir satır için yeterli alanı bırakır.

    Daha fazla bilgi için, bkz. CREATE INDEX (Transact-SQL).

  • FILLFACTOR =fillfactor
    Nasıl tam olarak gösteren bir yüzdesini belirtir Veritabanı Altyapısı her dizin sayfası sırasında dizin oluşturma veya yaprakdüzey yapmak yayımlanmasından.fillfactor1-100 bir tamsayı değeri olmalıdır.Varsayılan değer 0'dir.

    Not

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

    Yalnızca ne zaman dizini ilk oluşturulduğunda yeniden veya açık bir FILLFACTOR ayarı uygulanır.Veritabanı Altyapısı Dinamik olarak değil tutmak belirtilen yüzdesini boş sayfaları.Daha fazla bilgi için, bkz. CREATE INDEX (Transact-SQL).

    doldurma faktörü ayarını görüntülemek için sys.indexes.

    Önemli notÖnemli

    Oluşturma veya FILLFACTOR değerine sahip bir kümelenmiş dizin değiştirerek etkiler depolama alanı verileri kapladığı, çünkü Veritabanı Altyapısı kümelenmiş dizinoluşturduğunda, verileri yeniden dağıtır.

  • SORT_IN_TEMPDB = {ON | OFF }
    Sıralama sonuçlar depolamak belirtir tempdb.Varsayılan kapalı'dır.

    • ON
      Dizin oluşturmak için kullanılan ara sıralama sonuçlar depolanmış olan tempdb.Tempdb olan bir farklı küme kullanıcı veritabanıdisklerden biri, bu dizin oluşturmak için gereken saat azaltabilir.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.

    Sıralama işlemi gerekli değilse veya sıralama bellekte gerçekleştirilen kullanılabilir, SORT_IN_TEMPDB seçeneği gözardı edilir.

    Daha fazla bilgi için, bkz. tempdb ve dizin oluşturma.

  • IGNORE_DUP_KEY = {on | OFF}
    Yinelenen anahtar değerleri bir benzersiz dizineklemek INSERT işlemi çalıştığında hata yanıtını belirtir.Dizin oluşturulduğunda veya yeniden sonra işlemleri yalnızca eklemek için IGNORE_DUP_KEY seçeneğini uygular.Seçenek yürütürken etkisi create INDEX, alter INDEX, veya güncelleştirme.Varsayılan kapalı'dır.

    • ON
      Yinelenen anahtar değerleri benzersiz dizineklendiğinde uyarı iletisi oluşacaktır.Yalnızca benzersiz kısıtlamayı ihlal satırları başarısız olur.

    • KAPALI
      Hata iletisi, bir benzersiz dizinyinelenen anahtar değerleri eklendiğinde ortaya çıkar.Tüm ekleme işlemini geri alınır.

    IGNORE_DUP_KEY küme on bir görünüm oluşturulmuş dizinleri, benzersiz olmayan dizinler, xml dizinler, kayma dizinleri ve filtre uygulanmış dizinler olamaz.

    IGNORE_DUP_KEY görüntülemek için sys.indexes.

    Geriye dönük uyumlu sözdiziminde ile IGNORE_DUP_KEY IGNORE_DUP_KEY ile için eşdeğerdir = on.

  • STATISTICS_NORECOMPUTE = {on | OFF}
    Dağılım istatistiklerini recomputed olup olmadığını belirtir.Varsayılan kapalı'dır.

    • ON
      Dışarı-in-tarih İstatistikler değil otomatik olarak recomputed.

    • KAPALI
      Otomatik istatistik güncelleştirme etkinleştirilir.

    Otomatik istatistik güncelleştirme, off için STATISTICS_NORECOMPUTE küme geri yükleme için veya yürütmek update STATISTICS norecompute yan tümceolmadan.

    Önemli notÖnemli

    Dağıtım istatistik otomatik recomputation devre dışı bırakılması en iyi yürütme planları tabloilgili sorguları için malzeme sorgu iyileştiricisi engelleyebilir.

  • ONLINE = { 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.

    xml dizinler veya kayma dizin, yalnızca çevrimiçi = off desteklenir ve çevrimiçi küme açık, bir hata oluşturdu olur.

    Not

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

    • ON
      Dizini işlem süresi için uzun süreli tablo kilitleri tutulmuyor.Ana dizin işlem aşamasında, bir hedefi paylaşım (Is) kilit yalnızca kaynak tablotutulur.Bu sorguları veya temel tablo ve dizinleri devam etmek için güncelleştirmeler sağlar.İşlem başlangıcında, kilit paylaşılan (s) çok kısa bir süre kaynak nesnesinde tutulur.İşlem sonunda bir s kilit çok kısa bir süre kaynak kümelenmemiş dizin oluşturulmuş ya da kümelenmiş dizin oluşturulduğunda veya çevrimiçi bırakılan sch-m (şema değiştirme) kilit alım veya kümelenmiş tutulur veya kümelenmemiş dizin şu anda oluşturulmaktadır.Yerel geçici tabloüzerinde bir dizin oluşturulduğunda çevrimiçi küme açık olamaz.

    • KAPALI
      Tablo kilitleri dizini işlem süresi için uygulanır.Çevrimdışı dizin operasyonu oluşturan, yeniden oluşturur veya kümelenmiş, düşünceye kayma, ya da xml dizin veya yeniden oluşturur veya düşünceye kümelenmemiş dizin, tabloşema değişikliği (Sch-m) kilit isteklerdir.Bu tüm kullanıcı erişimi için temel tablo işlemi süresince önler.kümelenmemiş dizin oluşturur bir çevrimdışı dizin işlem tablo kilit paylaşılan (s) kapsar.Bu güncelleştirmeler alttaki tablo engeller ancak select deyimleri gibi okuma işlemleri.

    Daha fazla bilgi için, bkz. Dizin Operations nasıl çevrimiçi çalışma.Kilitleri hakkında daha fazla bilgi için bkz: Kilit modları.

    Dizin, temp genel tablolarda dizinler dahil olmak üzere çevrimiçi aşağıdaki özel durumlar dışında yeniden oluşturulması:

    • xml dizinler

    • Yerel bir temp tablolarda dizinler

    • Bir alt küme bölümlenmiş dizin (tüm bölümlenmiş dizin çevrimiçi yeniden.)

    • lob veri türleri temel tablo içeriyorsa, kümelenmiş dizinler

    • lob verileri ile tanımlanan kümelenmemiş dizinleri sütunları yazın

    Kümelenmemiş dizinler tablo lob veri türleri içerir, ancak bu sütunlar hiçbiri anahtar veya sütunlarla eşleştirmeye başlar dizini tanımındaki kullanılan çevrimiçi yeniden.

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

    Not

    Bir dizini yeniden allow_page_locks off için küme olduğunda.

  • 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 seçeneği sözdizimi kurallarına göre bir kayma dizin veya birincil xml dizin için tüm xml dizinler için desteklenir ama alter INDEX şu anda 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 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.

  • DATA_COMPRESSION
    Belirtilen dizin, bölüm numarası veya aralık bölümleri için veri sıkıştırma seçeneği belirtir.Seçenekler aşağıdaki gibidir:

    • HİÇBİRİ
      Dizin veya belirtilen bölümleri sıkıştırılmaz.

    • SATIR
      Dizin veya belirtilen bölümleri satır sıkıştırması kullanılarak sıkıştırılır.

    • SAYFA
      Dizin veya belirtilen bölümleri sayfa sıkıştırması kullanılarak sıkıştırılır.

    Sıkıştırma hakkında daha fazla bilgi için bkz: Sıkıştırılmış tablolar ve dizinler oluşturma.

  • BÖLÜMLERİNDE () { <partition_number_expression> | <aralık>} , ...n**)**
    DATA_COMPRESSION ayar uygulanacağı bölümlerini belirtir.Dizin bölümlenmiş değil on bölüm bağımsız bir hata oluşturur.on bölüm yan tümce sağlanmazsa, DATA_COMPRESSION seçenek bölümlenmiş dizintüm bölümler için geçerlidir.

    <partition_number_expression> aşağıdaki şekillerde belirtilebilir:

    • Numarası için bir bölüm, örneğin sağlar: DİSK (2).

    • Örneğin virgülle ayırarak birkaç tek tek bölümleri için bölüm numaraları sağlar: BÖLÜMLERİNDE (1, 5).

    • Aralıkları ve tek tek bölümleri sağlar: BÖLÜMLERİNDE (2, 4, 6-8).

    <aralık> örneğin word için ayrılmış bölüm numaraları olarak belirtilebilir: BÖLÜMLERİNDE (6-8).

    küme farklı türleri farklı bölümleri için veri sıkıştırması için DATA_COMPRESSION seçeneği birden fazla kez örneğin belirtin:

    REBUILD WITH 
    (
    DATA_COMPRESSION = NONE ON PARTITIONS (1), 
    DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
    DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
    )
    

Açıklamalar

alter INDEX dizin bölümlemeli veya farklı dosya grubutaşımak için kullanılamaz.Bu deyim ekleme veya sütunları silme veya sütun sırasını değiştirme gibi dizin tanımını değiştirmek için kullanılamaz.create INDEX ile DROP_EXISTING yan tümce bu işlemleri gerçekleştirmek için kullanın.

Bir seçenek açıkça belirtilmemişse, geçerli ayarı uygulanır.Örneğin, FILLFACTOR ayarı yeniden yan tümcetümcesinde belirtilmezse, sistem kataloğunda depolanan doldurma faktörü değeri yeniden oluşturma işlemi sırasında kullanılır.Geçerli dizin seçeneği ayarlarını görüntülemek için sys.indexes.

Not

Çevrimiçi maxdop ve SORT_IN_TEMPDB değerleri, sistem kataloğunda saklanmaz.deyimdizin belirtilmediği sürece, bu seçenek için varsayılan değer kullanılır.

Çok işlemcili bilgisayarlarda olduğu gibi diğer sorguları alter dizin yeniden otomatik olarak daha fazla işlemci tarama gerçekleştirmek ve dizin değiştirme ile ilişkili işlemleri sıralamak için kullanır.alter dizin yeniden DÜZENLEMEK, veya LOB_COMPACTION, olmadan çalıştırdığınızda parallelism en büyük ölçüde tek bir zincir işlemi bir değerdir.Daha fazla bilgi için, bkz. Paralel dizin işlemleri yapılandırma.

Bir dizin yeniden düzenlenmesi veya yeniden olduğu bulunduğu dosya grubu çevrimdışıysa veya salt okunur küme .Bir çevrimdışı veya salt okunur dosya grubuiçinde olduğunda, tüm belirtilen anahtar sözcüğünü ve bir veya daha fazla dizin deyim başarısız olur.

Dizinler yeniden oluşturuluyor

Bir dizini yeniden oluşturuluyor düşünceye ve dizin yeniden oluşturur.Bu parçalanma kaldırır, belirtilen veya varolan doldurma faktörü ayarını temel alan sayfaları sıkıştırarak disk alanı biçimiyleilgili ve birbirini izleyen sayfaları dizin satırları yeniden sıralar.Tüm belirtilmişse, tablo tüm dizinler silinir ve tek bir işlem içinde yeniden.YABANCI anahtar kısıtlamaları önceden kesilmesini gerekmez.Dizinleri 128 uzanımı ile veya daha fazla yeniden oluşturulurken, 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.

Not

Yeniden inşa etmek ya da küçük dizinler genellikle yeniden düzenleme parçalanma azaltmaz.Küçük dizin sayfaları karışık uzantılarına bağlı saklanır.Küçük bir dizin içinde parçalanma yeniden düzenleme ya da onu yeniden oluşturuluyor sonra azalabilir değil böylece karışık kapsamlarını sekiz nesneleri tarafından paylaşılır.Karışık kapsamları hakkında daha fazla bilgi için bkz: Anlama sayfaları ve kapsam.

Önceki sürümlerinde SQL Server, size bazen yeniden kümelenmemiş dizin düzeltmek tutarsızlıklar nedeniyle donanım hataları.De SQL Server 2008, hala çevrimdışı bir kümelenmemiş dizin yeniden oluşturduğunuzda dizin kümelenmiş dizin arasındaki bu tür tutarsızlıkları onarmak mümkün olabilir.Ancak, çünkü çevrimiçi yeniden oluşturma mekanizması varolan bir kümelenmemiş dizin yeniden oluşturma için temel olarak kullanmak ve böylece tutarsızlığı persist çevrimiçi dizin yeniden oluşturma kümelenmemiş dizin tutarsızlıkları onaramaz.Çevrimdışı dizin yeniden oluşturma buna kümelenmiş dizin (veya yığın) bir taramayı zorla ve bu nedenle tutarsızlığı kaldırın.Olarak daha önceki sürümleriyle etkilenen veri bir yedekgeri yükleyerek tutarsızlıklar kurtarma öneririz; Ancak, çevrimdışı kümelenmemiş dizin yeniden oluşturma dizini tutarsızlıkları onarmak mümkün olabilir.Daha fazla bilgi için, bkz. DBCC CHECKDB (Transact-SQL).

Dizinler yeniden düzenleme

Bir dizini yeniden düzenleme en az sistem kaynağı kullanır.Fiziksel olarak yaprak- mantıksal eşleştirmek içindüzey sayfalar, yaprak düğümlerin sırasını soldan sağa doğru sıralayarak kümelenmiş ve kümelenmemiş dizinleri tablolar ve görünümler üzerinde yaprakdüzey birleştirir. Yeniden düzenleme, dizin sayfaları sıkıştırır.Sıkıştırma, varolan doldurma faktörü değerini temel alır.doldurma faktörü ayarını görüntülemek için sys.indexes.

Tüm olduğunda belirtilen, ilişkisel dizinler kümelenmiş ve kümelenmemiş, ve xml dizinler tablo yeniden düzenlenmesi.Bazı kısıtlamalar belirtirken tüm uygulama, tüm bağımsız değişkenleri bölümünde tanımına bakın.

Daha fazla bilgi için, bkz. Yeniden düzenleme ve dizinler yeniden oluşturuluyor.

Dizinler devre dışı bırakma

Dizin devre dışı bırakma kullanıcı erişimini ve kümelenmiş dizinler, dizin için temel tablo verilerini engeller.Dizin tanımı sistem Kataloğu'nda kalır.kümelenmemiş dizin veya bir görünümde kümelenmiş dizin fiziksel olarak devre dışı bırakma dizin verileri siler.kümelenmiş dizin devre dışı bırakmak için veri erişimi engeller, ancak dizin bırakılan veya yeniden kadar veri B-ağacı unmaintained kalır.Durumunu etkin veya devre dışı dizingörüntülemek için query is_disabled sütun sys.indexes Katalog görünümü.

Bir tablo işlem çoğaltma yayınise, birincil anahtar sütunları ile ilişkili tüm dizinler devre dışı bırakamazsınız.Bu dizinler çoğaltmatarafından gerekli.Dizin devre dışı bırakmak için ilk yayın tablo bırakmak gerekir.Daha fazla bilgi için, bkz. Yayımlama veri ve veritabanı nesneleri.

alter dizin yeniden oluşturma deyim veya DROP_EXISTING ile dizin oluşturma deyim dizinini etkinleştirmek için kullanın.Çevrimiçi seçeneğini küme açık olan devre dışı bırakılmış bir kümelenmiş dizin yeniden oluşturuluyor gerçekleştirilemez.Daha fazla bilgi için, bkz. Dizinler devre dışı bırakma.

Seçeneklerini ayarlama

kümeDeğiştirilen değerleri hemen dizine uygulanır.Bu ayarları görüntülemek için sys.indexes.Daha fazla bilgi için, bkz. Dizin seçeneklerini ayarlama.

Satır ve sayfa kilitleri seçenekleri

Zaman allow_row_locks = on ve allow_page_lock = on, satırdüzey, sayfa-düzeyve tablo-düzey kilitleri dizin erişim verilir.Veritabanı Altyapısı Uygun kilit seçer ve kilit bir satır ya da sayfakilit gelen tablokilityükseltebileceği.

Zaman allow_row_locks = off ve allow_page_lock = off, yalnızca bir tablo- dizin erişimdüzey kilit verilir.Dizin kilitleme taneciklik yapılandırma hakkında daha fazla bilgi için bkz: Bir dizini için kilitleme özelleştirme.

all belirtildiğinde satır veya sayfa kilit seçeneklerini kümezaman, ayarlar tüm dizinler uygulanır.Temel tablo yığın olduğunda, ayarlar aşağıdaki yollarla uygulanır:

allow_row_locks = on veya off

Öbek ve ilişkili tüm kümelenmemiş dizinler için.

ALLOW_PAGE_LOCKS = ON

Öbek ve ilişkili tüm kümelenmemiş dizinler için.

ALLOW_PAGE_LOCKS = OFF

Tam kümelenmemiş dizinler için.Yani, tüm sayfa kilitlemeleri kümelenmemiş dizinler üzerinde izin verilmiyor.Yalnızca paylaşılan (s), update (u) ve sayfa için özel (x) kilitler öbek üzerinde izin verilmez.Veritabanı Altyapısı Hala Sunucusu'ndan bir hedefi sayfakilit (Is, ıu veya IX) iç amaçlar.

Daha fazla bilgi için, bkz. Kilit yükseltme (veritabanı altyapısı).

Çevrimiçi dizin işlemleri

küme on, alttaki nesneler, tablolar ve ilişkili dizinler dizin ve çevrimiçi seçeneğini yeniden inşa etmek olduğunda, sorguları ve veri değişikliği için kullanılabilir.Özel tablo kilitleri değişikliği işlemi sırasında saat tutulur.

Bir dizini yeniden düzenleme her zaman çevrimiçi gerçekleştirilir.İşlem, kilitleri uzun vadede tutmaz ve bu nedenle değil sorguları blok veya çalışmakta olan güncelleştirmeler yapar.

Yalnızca aşağıdaki yaparken aynı tablo aynı anda çevrimiçi dizin işlemleri gerçekleştirebilirsiniz:

  • Birden fazla kümelenmemiş dizinler oluşturuluyor.

  • Aynı tablofarklı dizinler yeniden düzenleme.

  • Farklı dizinler yeniden düzenleme aynı tabloörtüşmeyen dizinler yeniden inşa etmek.

Aynı saat gerçekleştirilen diğer tüm çevrimiçi dizin işlemleri başarısız.Örneğin, aynı anda aynı tablo iki veya daha fazla dizin yeniden oluşturma veya aynı tablovarolan bir dizini yeniden oluşturma sırasında yeni bir dizin oluşturmak olamaz.

Daha fazla bilgi için, bkz. Çevrimiçi dizin işlemleri gerçekleştirme.

Kayma dizin kısıtlamaları

Kayma dizini yeniden oluşturduğunuzda, kayma dizin şema kilittutan olduğundan temel kullanıcı tablo dizini işlem süresi için kullanılamaz.

Kullanıcı tablo PRIMARY key kısıtlaması sütun o tabloüzerinde kayma bir dizin tanımlı sırada değiştirilemez.PRIMARY key kısıtlaması değiştirmek için önce her kayma dizin tablobırakma.PRIMARY KEy kısıtlaması değiştirdikten sonra her bir kayma dizinler yeniden oluşturabilirsiniz.

İşlem tek bir bölüme yeniden, herhangi bir kayma dizinler belirtemezsiniz.Ancak tam bölüm yeniden kayma dizinler belirtebilirsiniz.

Özel BOUNDING_BOX veya kılavuz, gibi bir kayma dizin seçeneklerini değiştirmek için ya da DROP_EXISTING belirten bir create KAYMA Index deyim kullanabilirsiniz = on, veya kayma dizin bırakın ve yeni bir tane oluşturun.Bir örnek için bkz: KAYMA Index (Transact-SQL) oluştur.

Veri sıkıştırma

Veri sıkıştırma hakkında daha fazla bilgi için bkz: Sıkıştırılmış tablolar ve dizinler oluşturma.

Nasıl sıkıştırılma durumunu değiştirme bir tablo, dizin veya bölüm etkileyeceğini değerlendirmek için kullanın sp_estimate_data_compression_savings saklı yordam.

Bölümlenmiş dizinler için aşağıdaki kısıtlamalar geçerlidir:

  • alter INDEX tüm kullandığınızda..., tablo varsa, tek bir bölüm sıkıştırma ayarını değiştiremezsiniz genel dizinler.

  • alter INDEX <dizini> ...BÖLÜMÜ YENİDEN...sözdizimi, belirtilen dizin bölümünün yeniden oluşturur.

  • alter INDEX <dizini> ...İLE YENİDEN...Sözdizimi dizinin tüm bölümlerini yeniden oluşturur.

İzinler

yürütmek alter INDEX, en azından, tablo veya Görünüm alter izni gereklidir.

Örnekler

A.Bir dizini yeniden oluşturuluyor

Aşağıdaki örnek, tek bir dizin yeniden oluşturur Employee tablo.

USE AdventureWorks2008R2;
GO
ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
REBUILD;
GO

B.Bir tablo tüm dizinler yeniden oluşturuluyor ve seçenekleri belirtme

Aşağıdaki örnek anahtar sözcüğünü belirtir ALL.Bu tabloile ilişkili tüm dizinler yeniden oluşturulur.Üç seçenek belirtilmedi.

USE AdventureWorks2008R2;
GO
ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON);
GO

C.Bir dizin ile lob düzenleme yeniden düzenleme

Aşağıdaki örnek, tek bir kümelenmiş dizinyeniden düzenler.yaprakdüzeylob veri türü dizin içerdiğinden, deyim de büyük nesne verisi içeren tüm sayfaları sıkıştırır. Varsayılan değeri olduğundan ile (LOB_COMPACTION) belirtme seçeneği gerekli değildir.

USE AdventureWorks2008R2;
GO
ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto
REORGANIZE ;
GO

D.Dizin seçeneklerini ayarlama

Aşağıdaki örnek dizin üzerinde çeşitli seçenekler ayarlar AK_SalesOrderHeader_SalesOrderNumber.

USE AdventureWorks2008R2;
GO
ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
    Sales.SalesOrderHeader
SET (
    STATISTICS_NORECOMPUTE = ON,
    IGNORE_DUP_KEY = ON,
    ALLOW_PAGE_LOCKS = ON
    ) ;
GO

E.Dizin devre dışı bırakma

Üzerinde bir kümelenmemiş dizin aşağıdaki örnek devre dışı bırakır Employee tablo.

USE AdventureWorks2008R2;
GO
ALTER INDEX IX_Employee_OrganizationNode ON HumanResources.Employee
DISABLE ;
GO

F.Sınırlamaları devre dışı bırakma

Aşağıdaki örnek bir birincil anahtar kısıtlaması birincil anahtar dizini devre dışı bırakarak devre dışı bırakır.Temel alınan tablo yabancı anahtar kısıtlamasını otomatik olarak devre dışı bırakılır ve uyarı iletisi görüntülenir.

USE AdventureWorks2008R2;
GO
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department
DISABLE ;
GO

sonuç kümesi için bu uyarı iletisi döndürür.

Warning: Foreign key 'FK_EmployeeDepartmentHistory_Department_DepartmentID'

on table 'EmployeeDepartmentHistory' referencing table 'Department'

was disabled as a result of disabling the index 'PK_Department_DepartmentID'.

G.Kısıtlamalar etkinleştirme

Aşağıdaki örnek örneği f. devre dışı bırakılan birincil anahtar ve yabancı anahtar kısıtlamalarını etkinleştirir

PRIMARY key kısıtlaması birincil anahtar dizini yeniden oluşturma etkin.

USE AdventureWorks2008R2;
GO
ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department
REBUILD ;
GO

YABANCI anahtar kısıtlamasını etkinleştirilir.

ALTER TABLE HumanResources.EmployeeDepartmentHistory
CHECK CONSTRAINT FK_EmployeeDepartmentHistory_Department_DepartmentID;
GO

H.bölümlenmiş dizinyeniden oluşturuluyor

Aşağıdaki örnek, bir tek bölüm, bölüm numarası oluşturur 5, bölümlenmiş dizin IX_TransactionHistory_TransactionDate.Bu örnekte, bölümlenmiş dizin örnek yüklü olduğu varsayılır.

USE AdventureWorks2008R2;
GO
-- Verify the partitioned indexes.
SELECT *
FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'Production.TransactionHistory'), NULL , NULL, NULL);
GO
--Rebuild only partition 5.
ALTER INDEX IX_TransactionHistory_TransactionDate
ON Production.TransactionHistory
REBUILD Partition = 5;
GO

Ö.Bir dizinin sıkıştırma ayarını değiştirme

Aşağıdaki örnek, nonpartitioned bir tabloüzerinde bir dizin oluşturur.

ALTER INDEX IX_INDEX1 
ON T1
REBUILD 
WITH ( DATA_COMPRESSION = PAGE )
GO

Ek veri sıkıştırma örnekler için bkz: Sıkıştırılmış tablolar ve dizinler oluşturma.