Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Dizin, tablo veya görünümden satırların alınmasını hızlandıran bir tablo veya görünümle ilişkilendirilmiş bir disk içi yapıdır. Dizin, bir tablo veya görünümdeki bir veya birden çok sütundan oluşturulan anahtarları içerir. Bu anahtarlar, SQL Server'ın anahtar değerleriyle ilişkili satır veya satırları hızlı ve verimli bir şekilde bulmasını sağlayan bir yapıda (B ağacı) depolanır.
Note
Belgelerde genellikle dizinlere başvuruda B ağacı terimi kullanılır. Rowstore dizinlerinde Veritabanı Altyapısı bir B+ ağacı uygular. Bu, sütun deposu dizinleri veya bellek için iyileştirilmiş tablolardaki dizinler için geçerli değildir. Daha fazla bilgi için SQL Server ve Azure SQL dizin mimarisi ve tasarım kılavuzuna bakın.
Tablo veya görünüm aşağıdaki dizin türlerini içerebilir:
Clustered
- Kümelenmiş dizinler, veri satırlarını anahtar değerlerine göre tablo veya görünümde sıralar ve depolar. Bu anahtar değerler, dizin tanımına dahil edilen sütunlardır. Veri satırları tek bir sırada depolanabildiği için tablo başına yalnızca bir kümelenmiş dizin olabilir.
- Tablodaki veri satırlarının sıralı olarak depolandığı tek zaman, tablonun kümelenmiş dizin içermesidir. Bir tabloda kümelenmiş dizin olduğunda, tablo kümelenmiş tablo olarak adlandırılır. Bir tablonun kümelenmiş dizini yoksa, veri satırları yığın olarak adlandırılan sıralanmamış bir yapıda depolanır.
Nonclustered
Kümelenmemiş dizinlerin veri satırlarından ayrı bir yapısı vardır. Kümelenmemiş dizin, kümelenmemiş dizin anahtarı değerlerini içerir ve her anahtar değeri girdisinin anahtar değerini içeren veri satırına yönelik bir işaretçisi vardır.
Kümelenmemiş dizindeki bir dizin satırından veri satırına yönelik işaretçiye satır bulucu adı verilir. Satır bulucunun yapısı, veri sayfalarının yığında mı yoksa kümelenmiş tabloda mı depolandığına bağlıdır. Yığın için, satır bulucu bir satır işaretçisidir. Kümelenmiş tablo için satır bulucu, kümelenmiş dizin anahtarıdır.
Var olan dizin anahtarı sınırlarını atlamak ve tam kapsamlı sorgular yürütmek için kümelenmemiş dizinin yaprak düzeyine anahtar olmayan sütunlar ekleyebilirsiniz. Daha fazla bilgi için bkz. Eklenen sütunlarla dizin oluşturma. Dizin anahtarı sınırları hakkında ayrıntılı bilgi için bkz. SQL Server için kapasite belirtimleri üst sınırı.
Hem kümelenmiş hem de kümelenmemiş dizinler benzersiz olabilir. Benzersiz bir dizinde, dizin anahtarı için aynı değere sahip iki satır olamaz. Aksi takdirde, dizin benzersiz değildir ve birden çok satır aynı anahtar değerini paylaşabilir. Daha fazla bilgi için bkz. Benzersiz dizin oluşturma.
Dizinler, tablo verileri her değiştirildiğinde bir tablo veya görünüm için otomatik olarak korunur.
Daha fazla özel amaçlı dizin türü için bkz. Dizinler .
Dizinler ve kısıtlamalar
SQL Server, tabloların sütunlarında PRIMARY KEY ve UNIQUE kısıtlamaları tanımlandığında otomatik olarak dizinler oluşturur. Örneğin, kısıtlama içeren UNIQUE bir tablo oluşturduğunuzda, Veritabanı Altyapısı otomatik olarak bir kümelenmemiş dizin oluşturur. Bir PRIMARY KEY yapılandırırsanız, kümelenmiş dizin zaten mevcut değilse, Veritabanı Altyapısı otomatik olarak kümelenmiş bir dizin oluşturur. Var olan bir tabloda bir PRIMARY KEY kısıtlamayı zorlamaya çalıştığınızda ve bu tabloda kümelenmiş bir dizin zaten varsa, SQL Server kümelenmemiş bir dizin kullanarak birincil anahtarı zorlar.
Daha fazla bilgi için bkz. Birincil anahtar oluşturma ve Benzersiz kısıtlamalar oluşturma.
Dizinler sorgu iyileştiricisi tarafından nasıl kullanılır?
İyi tasarlanmış dizinler disk G/Ç işlemlerini azaltabilir ve daha az sistem kaynağı tüketebilir. Bu nedenle, bu dizinler sorgu performansını geliştirir. Dizinler , , SELECTUPDATEveya DELETE deyimleri içeren MERGEçeşitli sorgular için yararlı olabilir. Veritabanındaki sorguyu SELECT JobTitle, HireDate FROM HumanResources.Employee WHERE BusinessEntityID = 250AdventureWorks2025 göz önünde bulundurun. Bu sorgu yürütülürken, sorgu iyileştirici verileri almak için kullanılabilir her yöntemi değerlendirir ve en verimli yöntemi seçer. Yöntem bir tablo taraması veya varsa bir veya daha fazla dizini tarıyor olabilir.
Tablo taraması sırasında sorgu iyileştiricisi tablodaki tüm satırları okur ve sorgunun ölçütlerine uyan satırları ayıklar. Tablo taraması, birçok disk G/Ç işlemi yaratır ve kaynak kullanımını yoğunlaştırabilir. Ancak, örneğin sorgunun sonuç kümesi tablodaki satırların yüksek bir yüzdesiyse, tablo taraması en verimli yöntem olabilir.
Sorgu iyileştiricisi bir dizin kullandığında, dizin anahtarı sütunlarını arar, sorgunun gerektirdiği satırların depolama konumunu bulur ve eşleşen satırları bu konumdan ayıklar. Genellikle, dizinde arama, tabloda aramaktan çok daha hızlıdır. Bir tablodan farklı olarak, bir dizin genellikle satır başına çok az sütun içerir ve satırlar sıralı düzendedir.
Sorgu iyileştiricisi genellikle sorguları yürütürken en verimli yöntemi seçer. Ancak, kullanılabilir dizin yoksa, sorgu iyileştiricisi bir tablo taraması kullanmalıdır. Göreviniz, ortamınıza en uygun dizinleri tasarlamak ve oluşturmaktır; böylece sorgu iyileştiricisi arasından seçim yapmak istediğiniz verimli dizinleri seçebilir. SQL Server, veritabanı ortamınızın analizine ve uygun dizinlerin seçimine yardımcı olması için Veritabanı Altyapısı Ayarlama Danışmanı'nı sağlar.
Important
Dizin tasarımı yönergeleri ve iç işlevleri hakkında daha fazla bilgi için SQL Server ve Azure SQL dizin mimarisi ve tasarım kılavuzuna bakın.
İlgili içerik
- SQL Server ve Azure SQL dizin mimarisini ve tasarım kılavuzunu
- Kümelenmiş dizin oluşturma
- Kümelenmemiş dizinler oluşturma