Genel dizin tasarım yönergeleri

Deneyimli Veritabanı yöneticileri, iyi bir dizin kümesi tasarlayabilirsiniz, ancak bu görevi çok karmaşık, saat ve hata-saldırıya bile Orta karmaşık veritabanları ve İş yükleri için açıktır.Veritabanı sorguları ve veri sütunları özelliklerini anlama uygun dizinleri tasarlamanıza yardımcı olabilir.

Veritabanı ile ilgili konular

Dizin tasarlarken, aşağıdaki veritabanı yönergeleri dikkate alın:

  • Çok sayıda dizinlerde bir tablo tüm dizinler uygun veri olarak ayarlanması gerekir çünkü INSERT, UPDATE, DELETE ve birleştirme performansını etkileyen tablo değişiklikler.

    • Yoğun over-indexing kaçının güncelleştirilmiş tablo ve dizinleri dar, diğer bir deyişle, korumak az sayıda sütun mümkün.

    • Fazla dizin düşük güncelleştirme gereksinimleri, ancak büyük miktarda veri içeren tablolar, sorgu performansını artırmak için kullanın.Çok sayıda dizin yardımcı SELECT deyimleri gibi verileri değiştiren bir sorgu performansı için sorgu iyileştiricisi hızlı erişim yöntem belirlemek seçim daha fazla dizin vardır.

  • Daha basit bir tablo tarama gerçekleştirmek üzere veri arama dizin çapraz geçiş yapmasını sorgu iyileştirici uzun olması nedeniyle küçük tablo dizine en uygun olmayabilir.Bu nedenle, küçük tablolarda dizinler her zaman kullanılabilir, ancak yine de tabloda değişiklik veri olarak saklanması gerekir.

  • Toplamlar, tablo birleştirme ve toplamlar ve birleştirme görünümü içeren görünümlerde dizinleri önemli performans artışı sağlayabilir.Görünümü açıkça sorgu için başvurulacak olan sorgu iyileştiricisi kullanmak.Daha fazla bilgi için bkz: Görünümleri tasarlama dizin.

  • Çözümleme veritabanı ve dizin önerilerde veritabanı altyapısı Tuning Advisor'ı kullanın.Daha fazla bilgi için bkz: Anlama Veritabanı Altyapısı Ayarlama Danışmanı.

Sorgu ile ilgili konular

Dizin tasarlarken, aşağıdaki sorgu yönergeleri dikkate alın:

  • Create kümelenmemiş dizinlerde tüm sütunları sık kullanılan koşullarına ve birleştirmek koşullarını sorgular.

    Important noteImportant Note:

    Gereksiz sütunları eklemekten kaçının.Çok fazla dizin sütunları ekleme, disk alanı ve dizin bakım performansı olumsuz etkileyebilir.

  • Sorgunun gereksinimlerini karşılamak için gereken tüm verileri dizin içinde bulunduğundan dizinleri kapsayan sorgu performansını iyileştirebilir.Diğer bir deyişle, yalnızca dizin sayfaları ve değil, tablo veya kümelenmiş dizin, veri sayfaları, istenen veri almak için gereklidir; bu nedenle, azaltma genel disk g/Ç.Örneğin, sorguda sütuna ve sütunları b ve c üzerinde oluşturulan bileşik dizin olan bir tabloda b tek başına dizinden belirtilen veriyi almak.

  • Sorgu ekleme ya da birden çok sorgu aynı satırları güncelleştirmek için kullanmak yerine tek bir deyim, olabildiğince çok satır değiştirmek yazın.Tek bir deyim kullanarak, en iyi duruma getirilmiş dizini bakım yararlanılabilir.

  • Sorgu türü ve sütunları sorguya nasıl kullanıldığını belirleyin.Örneğin, bir tam eşleşen sorgu türü kullanılmakta olan sütun kümelenmemiş veya kümelenmiş dizin için iyi bir aday olabilir.Daha fazla bilgi için bkz: Sorgu türleri ve dizinler.

Sütun konuları

Tasarlarken, aşağıdaki sütun kılavuzları dizin düşünün:

  • Dizinin uzunluğunu anahtar kısaltması kümelenmiş dizinleri tutar.Ayrıca, kümelenmiş dizinler benzersiz veya nonnull sütunlarda oluşturulan yararlanır.Daha fazla bilgi için bkz: Kümelenmiş dizin tasarım yönergeleri.

  • Biri olan sütunlarntext,text,image,varchar(max),nvarchar(max), andvarbinary(max)veri türleri dizin anahtar sütunları. belirtilemezBununla birlikte,varchar(max),nvarchar(max),varbinary(max), vexmlveri türleri yer kümelenmemiş bir dizin olmayan dizin sütunları.Daha fazla bilgi için bkz: Içerilen sütunları içeren dizin.

  • Anxmlveri türü yalnızca bir anahtar olarak sütun yalnızca, bir XML dizini.Daha fazla bilgi için bkz: XML veri türü sütun dizinleri.

  • İnceleme sütun benzersiz.Ek bilgi için aynı sütun birleşimi benzer bir dizin yerine benzersiz dizin sunar sorgu iyileştiricisi dizini daha yararlı olur.Daha fazla bilgi için bkz: Benzersiz dizin tasarım yönergeleri.

  • Sütundaki veri dağıtım inceleyin.Sık sık uzun süre çalışan sorgunun birkaç benzersiz değerlere sahip bir sütunun dizin ya da böyle bir sütun birleştirmek işlemi nedeniyle oluşur.Bu temel sorun veriler ve sorgu ve genellikle bu durum tanımlama olmadan çözülemez.Örneğin, soyadına göre alfabetik olarak sıralanmış fiziksel bir telefon dizini, şehrin tüm kişiler ya da Can Etikan adlı bir kişi bulma hızlandırmak değil.Veri dağıtımı, daha fazla bilgi için bkz:Sorgu performans geliştirme için istatistikleri'ni kullanma.

  • Örneğin seyrek sütunlar, daha çok null değerler içeren sütunlar, sütun değerlerinin kategorilerle ve sütunlar farklı değerleri aralığı ile iyi tanımlanmış alt olan sütunlarda süzülmüş dizini kullanmayı düşünün.İyi tasarımlanmış bir filtre uygulanmış dizin sorgu performansını artırmak, dizin bakım maliyetlerini düşürmek ve depolama maliyetini azaltır.Daha fazla bilgi için bkz: Süzülmüş dizin tasarım yönergeleri.

  • Dizin birden fazla sütun içeriyorsa, sütun sırasını göz önünde bulundurun.Bir eşittir (=) için büyük, WHERE yan tümcesinde kullanılan sütun ( >), küçüktür ( <), veya BETWEEN arama koşulu veya bir birleştirmek alan, ilk önce yerleştirilmelidir.Ek sütunlar sipariş alarak distinctness, düzey, en sorumluluk alanlarından en az ayrı için.

    Örneğin, dizin olarak tanımlanırLastName,FirstNamedizin olması yararlı olan arama ölçütüWHERE LastName = 'Smith'orWHERE LastName = Smith AND FirstName LIKE 'J%'.Ancak, sorgu iyileştirici değil kullandığınız sorguda yalnızca arama diziniFirstName (WHERE FirstName = 'Jane').

  • Hesaplanan sütunlar dizin oluşturmayı düşünün.Daha fazla bilgi için bkz: Hesaplanan sütunlar üzerinde dizin oluşturma.

Dizin Özellikleri

Bir dizin sorgu için uygun olduğunu belirledikten sonra durumunuza en iyi uyan dizin türünü seçebilirsiniz.Dizin özellikleri şunları içerir:

  • Kümelenmiş ve kümelenmemiş

  • Benzersiz veya benzer

  • Multicolumn ve tek sütun

  • Dizin içindeki sütunları azalan veya artan

  • Tüm tablo ve kümelenmemiş dizinleri için filtre

Ayrıca, performans veya bakım FILLFACTOR gibi bir seçeneği ayarlayarak en iyi şekilde dizinin ilk depolama özelliklerini özelleştirebilirsiniz.Daha fazla bilgi için bkz: Dizin seçeneklerini ayarlama. Ayrıca, performansını arttırmak için dosya gruplarını veya bölüm düzeni kullanarak dizin depolama konumunu belirleyebilirsiniz.Daha fazla bilgi için bkz: Dizinler üzerinde Filegroups yerleştirme.