Benzersiz bir kümelenmiş dizin ile kümelenmiş birincil anahtar arasında somut bir fark var mı?


17

İkisi arasında anlam veya niyet farkı olabileceğini anlıyorum , ancak kümelenmiş bir birincil anahtar ile kümelenmiş benzersiz bir dizin arasında davranışsal veya performans farklılıkları var mı?

Yanıtlar:


15

Temel farklardan biri, benzersiz dizinin birincil anahtarda izin verilmeyen bir NULL değerine sahip olmasıdır. Kümelenmiş olsun veya olmasın, bu Birincil Anahtarın Pratik Anahtar ile Benzersiz Anahtarın pratik uygulaması arasındaki temel farktır.

Oh, ve bir tablo bir PK ve birçok İngiltere olabilir :-).

Bunların her ikisi de PERFORMANS değil INTENT'teki farklardır. Aksi takdirde, bir fark olduğunu düşünmüyorum. Herhangi bir PK veya İngiltere'nin arkasında SQL Server bir indeks oluşturur (isteğe bağlı olarak, kümelenmiş olsun ya da olmasın) ve kaynak kullanımı için şeffaftır.


Dolayısıyla NOT NULL UNIQUE CLUSTERED, RDMS agnostik olsa bile, belirli bir UQ'nun meta veri anlamında "özel" olduğunu vurgulamak için (A) veya (B) için bir diğer ad olarak bir PK kullanmak için hiçbir neden yoktur ?
Tüm Ticaretten Jon

Evet, böyle bir şey, ben B seçeneği :-) için gitmek istiyorum.
Marian

Bir nedeni var - uygun olmayan yerlerde NULL özel değerini kullanarak durdurmak için!
JamesRyan

@ JamesRyan: Bu, All Trades'in #A nedeninden Jon tarafından kapsanıyor.
Andriy M

1
@JamesRyan: Evet, PRIMARY KEYve arasında NOT NULL UNIQUE, birincisi dönüştürmek çok daha zor olurdu NULL UNIQUE(özellikle kısıtlamaya zaten yabancı bir anahtar tarafından başvurulmuşsa). Kesinlikle yanlışlıkla değişiklik yapılmasını önlemek misiniz NOT NULLetmek NULL.
Andriy M

8

Kümelenmiş birincil anahtar ile benzersiz bir kümelenmiş dizin arasında, benzersiz kümelenmiş dizinin NULL değerine sahip olabileceğinden farklı bir değer yoktur.

Benzersiz olmayan bir kümelenmiş dizin, benzersiz olmayan değerler için ele alınması gereken bir benzersizleştiriciye sahiptir.


Bu tablodaki diğer dizinlerin doğrudan birincil anahtar tarafından oluşturulan dizini yok sayarak kümelenmiş dizindeki satırlara işaret ettiği anlamına mı geliyor?
bernd_k

1
Bu doğru. Kümelenmemiş dizinler birincil anahtarı değil, kümeleme anahtarını gösterir. Birincil anahtar kümelenmemiş bir anahtarsa, tek yaptığı, NULL değerlerini desteklemeyen bir sütunda benzersizlik sağlamaktır, böylece yabancı bir anahtarla kullanılabilir.
mrdenny
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.