我想存储无向图边(例如,对于朋友).要存储和检索节点a的所有朋友,可以使用:
每个边创建两行,每个节点在一列上查询:
+--------------------------+
| id | from_node | to_node |
+--------------------------+
| 1 | a | b |
| 2 | b | a |
+--------------------------+
SELECT * FROM `x` WHERE from_node = a
每边创建一行,使用OR:
+--------------------------+
| id | node_a | node_b |
+--------------------------+
| 1 | a | b |
+--------------------------+
SELECT * FROM `y` WHERE node_a = a OR node_b = a
这样可以提高查找效率?
>表x包含2n行,from_node和to_node上的索引,在一列上查找
>表y包含n行,node_a和node_b上的索引,使用OR在两列上查找