Вы можете оптимизировать производительность, создав 2 строки для каждого отношения.
Допустим, у вас есть таблица Items и таблица Relations, а у Person A есть связь с Person B. В таблице Relations есть левый и правый столбец, оба ссылаются на Items. Теперь, если у вас есть только одна строка для этого отношения, и вы хотите все отношения для определенного элемента, у вас будет запрос, похожий на этот:
SELECT * FROM Relations WHERE LeftItemId = @ItemId OR RightItemId = @ItemId
ИЛИ в этом запросе ухудшит вашу производительность! Если вы продублируете строку и поменяете отношение (слева становится право, и наоборот), запрос выглядит так:
SELECT * FROM Relations WHERE LeftItemId = @ItemId
При правильном указателе этот показатель будет невероятно быстрым.