私はメンバーからメンバーへの接続のテーブルを持っています。スキーマはmember_id、friend_id、is_activeです。私は友人の友人である人のメンバーのつながりのリストを作りたいと思っています。私は、どのように半最適化された方法だけではなく、クエリに取り組むかについて本当に確実ではありません。分離の度合い
上記の表は、member_idとfriend_idが本質的に別のテーブルで同じように機能します。私のシステムでは、これらのidは、この1つのテーブルを除いて、一般的にmember_idと呼ばれます。たとえば、私のmember_idが21であるとしましょう。私の番号は、member_idまたはfriend_idのいずれかとして無限の他の行に置くことができます。元の友人要求を元にした人、私は基本的に同じことをするために列を二重にするだろう。
私は程度のレベルを確立できない(LinkedInと思う)だけではなく、1人の人が表示されている可能性のある友人の数を設定することもできます(Facebookと思う)。ここでのx要素は、前述のis_active列です。この列は0または1です。オン/オフスイッチとして機能する単純な列です。 1との任意の友人接続はアクティブな友人関係であり、0は保留中です。私はこの質問を積極的な友人や活発な友人などのもとに置く必要があります。私の友人が持っている活発な友人のどれも私の活発な友人ではありません。
私はこのようなクエリを構成するにはどうすればよいですか(私は分離のレベルを表示することはできませんし、相互カウントを取得するだけです)?今は何かを考えることはできますが、クエリの後にクエリーがループ内にネストされていることがありますが、私のサーバーの全体的なパフォーマンスや健康状態には時間がたつにつれて良いことは描けません。
ほとんどの「最短経路」アルゴリズムで、一方向のパスは物事がはるかに簡単になりますので、あまり重複を心配していないようです。 –