A nie myślałeś, aby zorbić dwie tabele, w taki sposób:
Tabela `users`:
Cytat
| user_id | username | user_email | user_password | // coś tam jeszcze, co potrzebujesz
oraz tabela `friends`:
Cytat
| user_id | friend_id |
na obydwie komórki nadajesz index i teraz, przykładowo wyciągamy znajomych dla usera o ID 15:
SELECT u.username, u.user_id, f.user_id, f.friend_id FROM `users` u LEFT JOIN `friends` f ON f.user_id = u.user_id WHERE u.user_id = 15;
Jako zwrot otrzymasz wszystkie potrzebne informacje o znajomych użytkownika o id 15

Ten sposób przetrzymywania danych jest też o tyle dobry, że usuwanie/dodawanie nowych znajomych jest bardzo proste, nie trzeba praktycznie nigdzie latać, zmieniać cudować - zwykły insert czy delete do bazy i po sprawie.
EDIT:
Teraz rozkminiłem, że w pierwszym poście chyba zaproponowałeś rozwiązanie tego samego typu

No trudno, w każdym bądź razie tego typu sposób jest OK