Bir üye-üye bağlantısı tablosum var. Şema member_id, friend_id, is_active. Arkadaşların arkadaşlarının üye bağlantılarının bir listesini oluşturmak istiyorum. Ben yarı-optimize bir şekilde bırakarak, sorgu ile nasıl başa çıkacağından emin değilim.Ayırma Sorguları Derecesi
Yukarıdaki tablo, member_id ve friend_id öğelerinin başka bir tabloda esasen aynı şey olduğu bir şekilde çalışır. Sistemimde, bu kimlikler genellikle bu tablo dışında member_id olarak adlandırılır. Örneğin, benim member_id 21 olduğunu söyleyeyim. Benim numaram, asıl arkadaşlık isteğini orijinal olarak kimin başlattığına dayalı olarak, ya da yedekli veriler istemediğim üyeler ya da friend_id ya da friend_id gibi sonsuz sayıda başka satırda olabilir. Temelde aynı şeyi yapmak için çift sıralarım olurdu.
Sadece bir dereceye kadar derece kuramama olanak tanıyan bir sorguya sahip olmak istiyorum (LinkedIn'i düşünün) ancak aynı zamanda bir kişinin kaç kişi tarafından görüntülenebileceğini de belirleyebilirim (Facebook'u düşünün). Burada x faktörü daha önce bahsettiğim is_active sütundur. Bu sütun 0 veya 1 olabilir. Bu açma/kapama düğmesi gibi davranan basit bir minik sütun. 1 olan arkadaş bağlantıları etkin bir arkadaşlık olurken, 0 beklemede. Bu sorguyu aktif arkadaşlarım ve aktif arkadaşlarımdan ayırmam gerekiyor. Arkadaşlarımın aktif arkadaşlarından hiçbiri benim aktif arkadaşlarım değil.
Böyle bir sorguyu nasıl oluşturabilirim (ayırma düzeyini gösteremesem ve yalnızca karşılıklı bir sayı alsam bile)? Şu anda, bir şey hakkında düşünebiliyorum ama sorgudan sonra sorguları iç içe geçmiş bir döngüyü içeriyor, ve evet, sunucuların genel performansı veya zamanla ilgili sağlık için iyi bir şey olduğunu resmedemiyorum.
Çoğu "kısa yol" algoritmalar ile, tek yönlü bir yol işler daha basit hale getireceğini görünüyor, bu yüzden çok fazla çoğaltma dert etmeyin. –