Bu soru, bu soruya bir yorum okuduktan sonra ortaya çıkıyor:
Çoktan çoğa bir tablo oluşturduğunuzda, iki yabancı anahtar sütununda bileşik birincil anahtar mı yoksa otomatik artış yedek "Kimlik" birincil anahtarı mı oluşturmalı ve iki FK sütununuza (ve belki de benzersiz bir kısıt)? Her durumda yeni kayıt eklemenin / yeniden indekslemenin performans üzerindeki etkileri nelerdir?
Temel olarak, bu:
PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)
buna kıyasla:
PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)
Yorumcu şöyle diyor:
iki kimliği PK yapmak, tablonun diskte bu sırayla fiziksel olarak sıralandığı anlamına gelir. Dolayısıyla, (Part1 / Device1), (Part1 / Device2), (Part2 / Device3), ardından (Part 1 / Device3) eklersek, veritabanı tabloyu parçalara ayırmalı ve sonuncuyu 2 ile 3 arasındaki girişler arasına eklemelidir. birçok kayıt, her eklendiğinde yüzlerce, binlerce veya milyonlarca kaydı karıştırmayı içerdiğinden bu çok sorunlu hale gelir. Buna karşılık, otomatik artan PK, yeni kayıtların sonuna kadar takip edilmesine izin verir.
Sormamın nedeni, her zaman yedek otomatik artış sütunu olmadan bileşik birincil anahtarı yapmaya meyilli olmam, ancak vekil anahtarın aslında daha performanslı olup olmadığından emin değilim.