これらの mysql ストレージ メソッドのどれがクエリを実行するのが速いでしょうか (@anyid と言う特定のユーザーのフレンドを取得するには):
Table: Friends
Columns: friend1 friend2
友情ごとに1行だけ挿入し、次のようにクエリします
select friend1
from FRIENDS
where friend2=@anyid
UNION ALL
select friend2
from FRIENDS
where friend1=@anyid
また
フレンドシップごとに 2 つの行を挿入し (friend1 friend2 として挿入してから、1,2 と 2,1 などのスワップされたエントリを挿入します)、単純に次のようにクエリを実行します。
select friend2 from FRIENDS where friend1=@anyid
私には、2 番目の方法の方がパフォーマンスが優れているように思えます。これは、1 つの列の friend1 と 1 つのクエリに対してのみインデックスを作成する必要があるためです。最初の方法では、両方の列にインデックスを付ける必要があり、2 つのサブクエリを実行する必要があります。しかし、一部の投稿では、最初の方法の方がパフォーマンスが良いと主張する人がいます。プラス面では、最初の方法は2番目の方法と比較して半分のストレージを使用します。これは、たとえば100万件のレコードに大きな違いをもたらします.
また、もう1つ、上記の2つの方法のいずれかのために、別々relationship_id
に保存する必要があります。creation_date
人間関係を築く時間や順序を与えること以外に、私が得られる特別なメリットは何でしょうか? ほとんどの人はそれなしで生きていけるはずです?
回答ありがとうございます。