Yabancı Anahtar Olarak Kompozit Birincil Anahtar verimliliği


12

Tabloya yinelenen girilmesini sağlamak için kullanılan Kompozit Birincil anahtar (4 sütundan oluşan) içeren bir tablo var. Şimdi bu tablodaki anahtarlara yabancı anahtar olarak başvurması gereken yeni bir tabloya ihtiyacım var.

Sorum şu ki arama hızları için hangi yaklaşım daha verimli:

1) 4 sütunu da içeren yeni tablo oluşturuyor ve hepsine yabancı anahtarda başvuruyor muyum?

veya

2) Birincil Anahtar tablosunda yeni bir kimlik sütunu oluşturuyor ve bunu yeni tabloda yabancı anahtar olarak mı kullanıyorum?

Bu veritabanı çok büyük miktarda veri tutması bekleniyor, bu yüzden şimdiye kadar her tabloda tutulan veri miktarını en aza indirmek amacıyla oluşturduk. Bunu göz önünde bulundurarak, her satır için 2 int sütun ve datetime sütunu kaydedeceğim için seçenek 2 en iyi yaklaşım olacaktır, ancak gereksizse arama süresini artırmaktan kaçınmak istiyorum.


1
Şahsen neredeyse her zaman INT IDENTITYböyle bir durumda bir yedek anahtar (örneğin bir ) kullanmak istiyorsunuz - referans ve sadece soooooo bu tabloya katılmak çok daha kolay hale getirir. Yinelemeleri önlemek için , bu dört sütuna UNIQUE bir kısıtlama koyun . Ayrıca: dar birincil anahtarlar performans nedeniyle çok daha iyidir (kümeleme anahtarı olarak kullanılıyorlarsa)
marc_s

Yanıtlar:


11

Basit bir sentetik tamsayı PK kullanmanın maliyeti küçüktür ve durumunuzdaki fayda muhtemelen oldukça dikkate değer olacaktır.

  • İşaret ettiğiniz gibi, çok daha basit bir FK ilişkiniz olacak.
  • Küçük bir PK küçük (ve hızlı) endeksler oluşturur. Bu tür bir sütun ekleyerek toplam tablo alanınız muhtemelen daha az olacaktır.
  • İş kuralları değişirse, tabloyu yeniden sıralamanız gerekmez.

Akla gelen tek dezavantaj, bileşik PK üzerinde kümelemeden yararlanan sorgularda performansı kaybedebilmenizdir. Bunun önemli olduğunu düşünüyorsanız, bileşik aday anahtar üzerinde kümelemeye devam edin, ancak PK'yi sentetik anahtarın üzerine koyun.


5

SQL dünyasında sıkça olduğu gibi, cevap: "Duruma göre değişir."

Bazı işaretçiler için bu soruya bir göz atın: Doğal anahtarlar, vekil tamsayı anahtarlarından daha yüksek veya daha düşük performans sağlıyor mu?

Doğal anahtarlar Yabancı Anahtar olarak kullanıldığında performansta iyileşme görülen durumlar vardır. Bununla birlikte, çoğu durumda daha küçük tuşlarla daha iyi olacaksınız (okuma: yedek anahtarlar).

Bu KİMLİK sütununu tanıtırsanız, Birincil Anahtar bile yapabilir ve bunun yerine "doğal" sütunları BENZERSİZ BİR SINIR olarak değiştiririm.

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.