Мне нужна помощь в разработке системы друзей
Таблица MySQL:
список друзей
- auto_ id
- Friend_ ID
- user_ id
- утвержден_ статус
Вариант 1 = Каждый раз, когда пользователь добавляет пользователя, в БД добавляется 2 записи, мы можем найти там таких друзей, как этот
SELECT user_id FROM `friends_list` WHERE friend_id='$userId' and approved_status='yes'
Вариант 2 = Мы добавляем 1 запись для каждого добавленного друга, а затем получаем список друзей, подобный этому
SELECT friend_id AS FriendId FROM `friends_list` WHERE user_id='$userId' and approved_status='yes'
UNION
SELECT user_id as FriendId FROM `friends_list` WHERE friend_id='$userId' and approved_status='yes'
Из 2 приведенных выше способов иметь друзей на таком сайте, как myspace, facebook, на всех других сайтах, какой из 2 приведенных выше методов будет наилучшим?
1-й метод удваивает количество строк, например, сайт с 2 миллионами строк-друзей будет только на 1 миллион строк вторым методом.
Тем не менее, метод объединения означает, что было сделано 2 запроса, поэтому 2 запроса к таблице с миллионами строк вместо 1?
UPDATE
Я только что провел тест на 60 000 друзей, и вот результаты, и да, таблицы проиндексированы.
Вариант 1 с 2 записями на друга;
.0007 секунд
Вариант 2 с 1 записью на друга с помощью UNION для выбора
3100 секунд