Büyük bir tablo [MyTable]anda hem bir sahiptir Primary Key, ve bir Unique Non Clustered Indexaynı sütunda ( [KeyColumn]). U NC endeksinde ek kaplama sütunları da vardır.
Aynı sütunlarda hem PK hem de Benzersiz NC Dizini'ne sahip olmak gereksiz görünüyor, bu yüzden Birincil Anahtarı silmeyi ve bunun yerine Referans Bütünlüğü amacıyla Benzersiz Kümelenmemiş dizini kullanmayı düşünüyordum.
Tablonun tamamen başka bir sütunla kümelendiğini unutmayın.
yani Yani:
ALTER TABLE [MyTable]
ADD CONSTRAINT [PK_MyTable]
PRIMARY KEY NONCLUSTERED ([KeyColumn])
GO
VE
CREATE UNIQUE NONCLUSTERED INDEX [IX_MyTable_SomeIndex]
ON [MyTable] ([KeyColumn])
INCLUDE ([Column1], [Column2])
GO
Bildiğim kadarıyla, Birincil Anahtar'a kaplama sütunları eklemek mümkün değil, bu yüzden yapmak niyetindeyim:
- Yabancı Anahtar Kısıtlamalarına bağlı bırak
MyTable.KeyColumn - Birincil Anahtarı
MyTable.KeyColumntamamen bırakın - Tabloya yabancı anahtarları yeniden ekleme (RI yoluyla uygulanacaktır yani
MyTable.KeyColumn)
Bunu yapmayı düşünebileceğim tek sonuç, ERD diyagramlarımızda görsel anahtar sembolünü alamayacağımız ve dahil edilen sütunlar nedeniyle (yaprak) dizin yoğunluğunun daha az olacağıdır.
Https://stackoverflow.com/questions/487314/primary-key-or-unique-index adresini okudum ve bunu yapmanın bütünlüğü ve performans yönlerinden memnunum.
Sorum şu: Bu yaklaşım kusurlu mu?
Düzenlemeye çalıştığım şeyi düzenle : Performans Optimizasyonu ve Bahar Temizliği . PK veya Dizin kaldırıldığında, dizinlerim için daha az sayfa gerekir = daha hızlı yazma, ayrıca bakım / işletim avantajları, yani birleştirilmiş tutmak için bir daha az dizin vb.
Bunu biraz arka plana koymak için, daha önce hiç bir PK olmadan referans alınan bir tablo yoktu. Ancak, tabloya sütunları içeren bir NC Dizini eklenmiş olması, düşüncelerimi uyarlamam gerektiği anlamına geliyor.