2010-11-22 8 views
0

Ben SQL Server 2005'te çok acemi ve ben çevrimiçi öğretici onu öğreniyorum, burada Soruma bazıları şunlardır:SQL Server 2005 acemi sorgu

1: XYZ seçin * arasındaki farktır ve TÜM seçin neler * XYZ'den.

2: Kümelenmiş dizinin amacı, tabloyu fiziksel olarak sıralayarak [kknow :-) kadar] aramayı kolaylaştırmak gibidir. Tabloda birincil sütun varsa, tablodaki kümelenmiş bir dizin oluşturmak iyi mi diyelim? çünkü zaten sıralanmış bir sütun var.

3: Neden bir tablo üzerinde 1 Kümelenmiş Dizin + 249 Kümelenmemiş İndeks = 250 Endeksi oluşturabiliriz? 1 kümelenmiş dizin gereksinimini anlıyorum. Ama neden 249? Neden 249'dan fazla değil?

  • Görüş değişir SELECT DISTINCT aksine

  • cevap

    0
    1. fark SELECT ALL varsayılan değerdir. Performans nedenleri için Kümelenmiş dizinler ideal olarak küçük, kararlı, benzersiz ve monoton olarak artmalıdır. Birincil anahtarlar da istikrarlı ve benzersiz olmalı, bu yüzden orada belirgin bir uyum var. Ancak kümelenmiş dizinler aralık sorguları için çok uygundur. PK'nin bireysel olarak kayıt altına alınması PK'nin kümelenmemiş olması durumunda iyi performans gösterebilir, bu nedenle bazı yazarlar PK üzerinde kümelenmiş indeksi “israf etmemek” önermektedir.

    2. SQL Server 2008'de bir tabloda 999'a kadar NCI oluşturabilirsiniz. Bunu hiç düşünemiyorum ama sınırın "filtrelenmiş dizinler" ile potansiyel olarak arttığını düşünüyorum, bu pek çok kişi için geçerli bir durum olabilir. İndeksler, değişikliklerin birden fazla yerde yayılması gerektiğinden, veri modifikasyon işlemlerine bir maliyet eklemektedir, bu yüzden sadece kümelenmemiş filtrelenmemiş indekslerin çift rakamlarını bile elde eden sadece büyük ölçüde okunabilir (örneğin raporlama) veritabanlarını olacağını hayal ediyorum. 3 için

    +0

    Öneriniz için teşekkürler, ben 1 ve 2 puanları ile anlaşıyorum. Ama ben 3 noktası ile biraz kafam karışmış, Neden 999 kümelenmemiş dizin tabloya neden 900 veya 1000 değil? – Zerotoinfinity

    +0

    @Zerotoinfinite - Bunu yanıtlayabilecek tek kişi SQL Server geliştiricileri! Dahili olarak, bu meta verileri saklamak için sınırlı miktarda alan ayırıyorlar ve 999 makul bir sınır gibi geliyorlar. –

    0

    : Eğer/insert TÜM indeksleri güncellenmelidir tablosundaki kaydı silinir

    Her zaman. Çok fazla dizininiz varsa çok uzun zaman alır.

    Tablonuz 5-6 dizine sahipse, zaman ayırıp kendinize bakmanız gerektiğini düşünüyorum.

    +0

    Girişiniz için teşekkürler. Ama sayı arasında kafam karıştı. Neden sadece 249? Neden 248 veya 251 değil? – Zerotoinfinity

    +0

    Tüm dizinlerin yalnızca bir tablonun kümelenmiş dizini varsa güncellenmesi gerektiğine inanıyorum –