SORU
20 AĞUSTOS 2008, ÇARŞAMBA


'Tablo arasındaki fark Tarama ler ne ve Kümelenmiş Dizin Tarama?

Table Scan Clustered Index Scan her ikisi de aslında tablodaki tüm kayıtları tarama beri, neden bir Kümelenmiş Dizin Tarama güya daha iyi olur?

Örnek olarak - çok sayıda kayıt olduğunda aşağıdakiler arasında performans farkı nedir?:

declare @temp table(
    SomeColumn varchar(50)
)

insert into @temp
select 'SomeVal'

select * from @temp

-----------------------------

declare @temp table(
    RowID int not null identity(1,1) primary key,
    SomeColumn varchar(50)
)

insert into @temp
select 'SomeVal'

select * from @temp

CEVAP
20 AĞUSTOS 2008, ÇARŞAMBA


Kümelenmiş bir dizin (bir yığın tablo) olmadan bir tablo, veri sayfaları geçme sayfaları lookup into the Index Allocation Map gerektirir o kadar birbirine bağlı değildir.

Kümelenmiş bir tablo, ancak, data pages linked in a doubly linked list - sıralı tarama biraz daha hızlı. Karşılığında elbette, Ekler, Güncelleştirmeleri ve Silmeleri üzerinde sırayla veri sayfaları tutulması ile ilgili masraf var. Bir yığın tablo, ancak, IAM yaz bir saniye gerektirir.

Sorgunuza ARALIK operatörü (örn., eğer SELECT * FROM TABLO WHERE Id 1 ile 100 ARASINDA), daha sonra kümelenmiş bir tablo (olmanın garantili sipariş) daha verimli olarak kullanabilir dizin sayfaları bulmak için ilgili veri sayfası(ler). Bir yığın edemiyor sipariş güveniyor beri tüm satırları tarar.

Ve, tabii ki, kümelenmiş bir dizin sağlar oldukça fazla performans için en uygun olan KÜMELENMİŞ bir DİZİN ARAMA yap,...dizin ile bir yığın her zaman bir tablo tarama sonucu.

Yani:

  • Tüm satırları seçin örnek sorgunuz için, tek fark kümelenmiş bir dizin tutar iki kat bağlantılı liste. Bu kümelenmiş tablo biraz daha hızlı bir öbek daha çok sayıda satır ile yapmak gerekir.

  • Bir sorgu ile WHERE olabilir (en azından kısmen) tarafından memnun kümelenmiş dizin, sana geliriz önde çünkü sipariş - yani bu olmayacak tarama tüm tablo.

  • Kümelenmiş dizin tarafından satisified olmayan bir sorgu için, çok bile...yine sensin, tek fark, ardışık iki kat bağlantılı liste tarama olmak. Her iki durumda da, vasatın altında.

  • Ekler, Güncelleştirmeleri ve Silmeleri için bir yığın olabilir ya da kazanamayabilirsin. Yığın düzeni korumak için değil, ama bir saniye yazma gerektirir IAM. Göreli performans farkı ihmal edilebilir, ama aynı zamanda veri bağımlı güzel olacağını düşünüyorum.

Microsoft benzer bir kümelenmiş dizin olmayan bir kümelenmiş dizin öbek (yukarıda tartıştık, ama yakın olarak aynı sayılmaz) karşılaştırır whitepaper. Vardıkları sonuç temelde tüm tablo kümelenmiş bir dizin koymaktır. Benim en iyi sonuçları (daha, çok kümelenmiş bir dizin burada olmayan bir kümelenmiş dizin ile karşılaştırıyorlar ama nispeten karşılaştırılabilir bence not) özetlemek gerekirse yapacağım:

  • 4* *performans: 3% ikinci nedeniyle hakkında yazmak ile kümelenmiş dizin kazanır bir yığın için gerekli.
  • 5* *performans: 8% ikinci arama bir yığın ihtiyaç nedeniyle hakkında kümelenmiş dizin kazanır.
  • 6* *performans: 18% ikinci arama ihtiyacı ve ikinci silmek bir yığın IAM ihtiyaç nedeniyle hakkında kümelenmiş dizin kazanır.
  • SELECT tek performans: 16% ikinci arama bir yığın ihtiyaç nedeniyle hakkında kümelenmiş dizin kazanır.
  • SELECT Aralık performans: ) oranında bir yığın rastgele sipariş nedeniyle hakkında kümelenmiş dizin kazanır.
  • eşzamanlı INSERT: kümelenmiş dizin için sayfa bölünmesi nedeniyle yük altında 0 oranında yığın masa kazanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • Wronchi Animation

    Wronchi Anim

    9 Mayıs 2011