Kullanıcıların arkadaşlıklarına ilişkin kayıtları tutan UserFriends
adlı bir tablo var. Her dostluk , bir çifti için olamazKullanıcıların arkadaş olup olmadığını kontrol etmek için verimli bir Entity Framework sorgusu nedir?
User1ID User2ID IsConfirmed
2 1 true
ama hem iş mantığı açısından eşittir sadece bir kayıt,
User1ID User2ID IsConfirmed
1 2 true
yoktur.
nedir en verimli A kullanıcısı B arkadaşı ise biz ilk ya da ikinci sütunda ise bunlardan hangisinin bilmiyorum gözönüne alınarak, söz Entity Framework sorgu (düz SQL karıştığı henüz okunabilir değil) ?
girişimim düz ve açıktır: Burada ||
daha iyi bir yolu
public bool AreFriends (int user1Id, int user2Id)
{
return MyObjectContext.UserFriends
.Any (uf => uf.IsConfirmed && (
(uf.UserID == user1Id && uf.FriendUserID == user2Id)
|| (uf.UserID == user2Id && uf.FriendUserID == user1Id)
));
}
var mı?
User1ID ve User2ID sütunları her ikisi de birincil anahtar sütunlarsa, bu sorgu nedenleri İndeks taraması ve çok etkilidir. Bu sorgunun yürütme planını gördünüz mü? – Arian
@Nima: Hayır yapmadım. Öyleyse, ikisi de anahtar olarak sorguyu verimli hale getiriyor mu? Ben gerçekten bir veritabanı adamı değilim ve bunun gibi girdileri takdir ediyorum. Yorumunuzu cevap olarak gönderebilir misiniz, böylece cevap verebilir ve başka bir şey kalmazsa doğru olarak işaretleyebilir miyim? –
@gaearon - Hayır, her ikisi de anahtar olarak değil, anahtar onlardır; ana anahtar/kümelenmiş dizininizi oluşturduğunuzda, hem User1ID hem de UserID2 arasında olmalıdır. – Phill