以下哪种 mysql 存储方法查询起来会更快(检索特定用户的朋友说@anyid):
Table: Friends
Columns: friend1 friend2
每个友谊和查询只插入一行
select friend1
from FRIENDS
where friend2=@anyid
UNION ALL
select friend2
from FRIENDS
where friend1=@anyid
或者
每个友谊插入两行(插入为friend1friend2,然后插入交换的条目,例如1,2和2,1),然后简单地查询为
select friend2 from FRIENDS where friend1=@anyid
对我来说,第二种方法似乎会表现得更好,因为它只需要对单个列friend1 和单个查询进行索引。第一种方法可能需要对两个列都进行索引,并且需要运行两个子查询。但在一些帖子中,我看到人们声称第一种方法可能会表现得更好。从好的方面来说,与第二种方法相比,第一种方法将占用一半的存储空间,这对于数百万条记录会产生巨大的影响。
还有一件事,是否需要单独存储上述两种方法中的任何一种relationship_id
。creation_date
除了给我建立关系的时间或顺序之外,我还能得到什么特别的好处,我认为大多数人应该能够没有它而生活?
感谢您的任何回答!