Aracılığıyla paylaş


Kümelenmiş dizin oluşturma

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

SQL Server Management Studio veya Transact-SQL kullanarak tablolarda kümelenmiş dizinler oluşturabilirsiniz. Birkaç özel durum dışında, her tablonun kümelenmiş dizini olmalıdır. Sorgu performansını artırmanın yanı sıra kümelenmiş dizin, tablo parçalanmalarını denetlemek için isteğe bağlı olarak yeniden oluşturulabilir veya yeniden organize edilebilir. Bir görünümde kümelenmiş dizin de oluşturulabilir. (Kümelenmiş dizinler Kümelenmiş ve kümelenmemiş dizinler makalesinde tanımlanmıştır.)

Tipik uygulamalar

Kümelenmiş dizinler aşağıdaki yollarla uygulanır:

  • PRIMARY KEY ve UNIQUE kısıtlamalar**

    Bir PRIMARY KEY kısıtlama oluşturduğunuzda, tablodaki kümelenmiş dizin yoksa ve benzersiz bir kümelenmemiş dizin belirtmezseniz, sütun veya sütunlarda otomatik olarak benzersiz bir kümelenmiş dizin oluşturulur. Birincil anahtar sütunu NULL değerlerine izin veremiyor.

    Kısıtlama UNIQUE oluşturduğunuzda, varsayılan olarak kısıtlamayı zorlamak için benzersiz bir UNIQUE kümelenmemiş dizin oluşturulur. Tabloda kümelenmiş bir dizin yoksa benzersiz bir kümelenmiş dizin belirtebilirsiniz.

    Kısıtlamanın bir parçası olarak oluşturulan bir dizine otomatik olarak kısıtlama adıyla aynı ad verilir. Daha fazla bilgi için bkz . Birincil ve yabancı anahtar kısıtlamaları ve Benzersiz kısıtlamalar ve denetim kısıtlamaları.

  • Kısıtlamadan bağımsız dizin

    Kümelenmemiş birincil anahtar kısıtlaması belirtildiyse birincil anahtar sütunu dışında bir sütunda kümelenmiş dizin oluşturabilirsiniz.

Limitations

  • Kümelenmiş dizin yapısı oluşturulduğunda, ilgili dosya ve dosya gruplarında hem eski (kaynak) hem de yeni (hedef) yapılar için disk alanı gerekir. İşlem tamamlanana kadar eski yapı deallocate edilmez. Sıralama için ek geçici disk alanı da gerekebilir. Daha fazla bilgi için bkz. Dizin DDL İşlemleri için Disk Alanı Gereksinimleri.

  • Kümelenmiş dizin, birkaç mevcut kümelenmemiş dizine sahip bir yığında oluşturulursa, tüm kümelenmemiş dizinler, satır tanımlayıcısı (RID) yerine kümeleme anahtarı değerini içerecek şekilde yeniden oluşturulmalıdır. Benzer şekilde, kümelenmiş dizin bir tablodan kaldırılırsa ve tabloda birkaç kümelenmemiş dizin varsa, kümelenmemiş dizinlerin tümü DROP işleminin bir parçası olarak yeniden oluşturulur. Bu işlem büyük tablolarda önemli zaman alabilir.

    Büyük tablolarda dizin oluşturmanın tercih edilen yolu, kümelenmiş dizinle başlamak ve ardından kümelenmemiş dizinler oluşturmaktır. Mevcut tablolarda dizin oluştururken seçeneğini ONLINE olarak ayarlamayı ON göz önünde bulundurun. olarak ONayarlandığında, uzun süreli tablo kilitleri tutulmaz. Bu, temel tablodaki sorguların veya güncelleştirmelerin devam etmelerini sağlar. Daha fazla bilgi için bkz. Dizin işlemlerini çevrimiçi gerçekleştirme.

  • Kümelenmiş dizinin dizin anahtarı, ayırma biriminde var olan veriler içeren ROW_OVERFLOW_DATA sütunları içeremez. Bir varchar sütununda kümelenmiş dizin oluşturulursa ve mevcut veriler ayırma birimindeyseIN_ROW_DATA, sütunda verileri satır dışına gönderebilecek sonraki ekleme veya güncelleştirme eylemleri başarısız olur. Satır taşması verileri içerebilecek tablolar hakkında bilgi edinmek için sys.dm_db_index_physical_stats (Transact-SQL) dinamik yönetim işlevini kullanın.

Permissions

Tablo veya görünümde ALTER izin gerektirir. Kullanıcının sysadmin sabit sunucu rolünün veya db_ddladmin ve db_owner sabit veritabanı rollerinin üyesi olması gerekir.

SQL Server Management Studio'yu kullanma

Nesne Gezgini'nden kümelenmiş dizin oluşturma

  1. Nesne Gezgini'nde, kümelenmiş dizin oluşturmak istediğiniz tabloyu genişletin.

  2. Dizinler klasörüne sağ tıklayın, Yeni Dizin'in üzerine gelin ve Kümelenmiş Dizin... öğesini seçin.

  3. Yeni Dizin iletişim kutusundaki Genel sayfasında, Dizin adı kutusuna yeni dizinin adını girin.

  4. Dizin anahtarı sütunları'nın altında Ekle...'yi seçin.

  5. table_nameSütun Seç iletişim kutusunda, kümelenmiş dizine eklenecek tablo sütununun onay kutusunu seçin.

  6. Tamam'ı seçin.

  7. Yeni Dizin iletişim kutusunda Tamam'ı seçin.

Tablo Tasarımcısı'nı kullanarak kümelenmiş dizin oluşturma

  1. Nesne Gezgini'nde, kümelenmiş dizine sahip bir tablo oluşturmak istediğiniz veritabanını genişletin.

  2. Tablolar klasörüne sağ tıklayın ve Yeni Tablo... öğesini seçin.

  3. Normalde yaptığınız gibi yeni bir tablo oluşturun. Daha fazla bilgi için bkz. Tablo oluşturma (Veritabanı Altyapısı).

  4. Daha önce oluşturulan yeni tabloya sağ tıklayın ve Tasarım'ı seçin.

  5. Tablo Tasarımcısı menüsünde Dizinler/Anahtarlarseçin.

  6. Dizinler/Anahtarlar iletişim kutusunda Ekle'yi seçin.

  7. Seçili Birincil/Benzersiz Anahtar veya Dizin metin kutusunda yeni dizini seçin.

  8. Kılavuzda Kümelenmiş Olarak Oluştur'u seçin ve özelliğin sağındaki açılan listeden Evet'i seçin.

  9. Kapat'ıseçin.

  10. Dosya menüsünde, Seçintable_namekaydet.

Transact-SQL kullanma

  1. Nesne Gezgini'nde Veritabanı Motoru'nun bir örneğine bağlanın.

  2. Standart araç çubuğunda, Yeni Sorgu'yu seçin.

  3. Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın.

    USE AdventureWorks2022;
    GO
    
    -- Create a new table with three columns.
    CREATE TABLE dbo.TestTable (
        TestCol1 INT NOT NULL,
        TestCol2 NCHAR(10) NULL,
        TestCol3 NVARCHAR(50) NULL
    );
    GO
    
    -- Create a clustered index called IX_TestTable_TestCol1
    -- on the dbo.TestTable table using the TestCol1 column.
    CREATE CLUSTERED INDEX IX_TestTable_TestCol1 ON dbo.TestTable (TestCol1);
    GO
    

Daha fazla bilgi için bkz. CREATE INDEX.