Если вы просто хотите выбрать конкретный набор друзей, запрос будет простым, и вам не придется беспокоиться о производительности.
Например: если вы хотите вернуть идентификаторы друзей UID 8, вы можете просто сделать что-то вроде:
Select FriendId FROM TABLE where UID=8;
В вашем случае, поскольку столбец UID не уникален, убедитесь, что в этом столбце есть индекс, чтобы обеспечить быстрый поиск (оптимизировать производительность).
Вы также можете подумать о том, какие еще данные вам понадобятся о друзьях пользователей. Например, вероятно, бесполезно просто захватывать FriendIds, вам, вероятно, нужны имена и т. Д. Таким образом, ваш запрос будет выглядеть примерно так:
Select FriendId, Users.name FROM Friends JOIN Users ON Users.uid=Friends.FriendId WHERE Friends.UID=8;
Опять же, правильная индексация столбцов является ключом для оптимизации поиска, особенно когда размер вашей таблицы становится большим.
Кроме того, поскольку добавление друзей, по-видимому, весьма необычно по сравнению с количеством поисковых запросов, которые вы делаете, обязательно выберите механизм базы данных, который обеспечивает самую быструю скорость поиска. В этом случае MyISam, вероятно, ваш лучший выбор. MyISam использует блокировку на уровне таблицы для вставок (т. Е. Медленных вставок), но поиск выполняется быстро.
Удачи!