Kümelenmiş dizin arama ile kümelenmemiş dizin arama arasındaki fark


10

Kümelenmiş Endeks (CI) araştırması ile Kümelenmemiş Endeks (NCI) araştırması arasındaki fark nedir? Biri diğerinden daha iyi performans gösteriyor mu?

Bunu sormamın nedeni, 50 milyon satır ve 150 sütunlu bir masam olması. IDKümelenmiş dizin olarak tanımlanan adlı bir sütunu vardır . Üzerinde aynı dizin anahtar kimliğine ve yedi included sütuna sahip bir NCI daha var . Bana öyle geliyor ki NC endeksi burada bir kopya ve güvenli bir şekilde bırakılabilir.

Bu yüzden, güvenli bir şekilde bırakılabiliyorsa veya sağlam kalmalı mı?


TÜM sütunların hiçbiri kümelenmemiş dizine eklendiğini mi söylüyorsunuz ?
Ian Ringrose

Hayır. Tabloda, CI olarak tanımlanmış kimlik sütunu ile 150 sütun vardır ve yine dizin anahtarı olarak ID sütunu ve içerdiği 7 sütun daha içeren NCI dizinine sahiptir.
SQLPRODDBA

Sonra Paul White doğru cevabı vermiş gibi görünüyor, ancak ben "temel" tablo kümelenmiş bir tablodan bir yığın değiştirmek gerekir. Ya da işlem günlüğü maliyetini azaltmak için farklı sütunların ne sıklıkta güncellendiğine bağlı olarak tabloyu bölün.
Ian Ringrose

Yanıtlar:


26

Kümelenmiş dizinle aynı tuşlara * sahip olan kümelenmemiş bir dizin yine de yararlı olabilir, çünkü kümelenmemiş dizin genellikle daha küçük ve daha yoğun olacaktır. Kümelenmiş bir dizinin tüm satır içi verileri içerdiğini unutmayın, bu nedenle normalde mümkün olan en geniş (en az yoğun) dizindir.

* Aynı anahtar sütunlar, aynı sırayla, aynı şekilde sıralanır (artan / azalan).

Tek bir arama (benzersiz bir dizine eşitlik yüklemesi kullanan bir arama) için temel fark, tek bir kaydın zaten bellekte olduğunu bulmak için gereken dizin sayfalarının önceden tahmin edilen daha büyük şansıdır. Her şey eşit olduğunda, 100 sayfalık kümelenmemiş bir dizin, 10.000 sayfada depolanan kümelenmiş bir dizinden daha iyi bir şansa sahiptir.

Tek birton hariç her türlü arama için bir tarama bileşeni de olacaktır. Tarama kısmı ayrıca kümelenmemiş endeksin daha büyük yoğunluğundan da yararlanır (sayfa başına daha fazla satır). Sayfaların kalıcı depolama alanından gelmesi gerekse bile, daha az sayfa okumak daha hızlıdır.

Sistem belgelerini kontrol etmeli, dizini ekleyen kişiye sormalı ve / veya bu dizinin neden var olduğunu anlamak için kod yorumlarını aramalısınız. Ayrıca , sıkıştırma da dahil olmak üzere tüm dizin tanımlarını dikkatlice kontrol etmeniz ve dizin bakım komut dosyalarına bakmanız gerekir. Kümelenmemiş dizine sahip olmanın başka özel nedenleri olabilir (örneğin, çevrimiçi yeniden oluşturma yeteneği).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.