Необходима помощь, по доработке "друзей"

На странице профиля показываются все друзья, я думаю, что лучше показывать 6 друзей и выводить их рандомно.
Битый час уже сижу и думаю над реализацией. Ничего кашерного в голову не пришло, ведь сам запрос надо кешировать и выводить друзей из кеша, чтобы он не сильно бил по серверу (в плане нагрузки).

Есть один выход, но он совсем не комильфо. Нагрузку будет создавать неимоверную.
Я в маппере user в функции GetUserFriends изменил запрос:
SELECT 
	uf.user_from,
	uf.user_to							
FROM 
	".Config::Get('db.table.friend')." as uf				
WHERE 	
	( uf.user_from = ?d
	OR
	uf.user_to = ?d )
	AND 
	( 	uf.status_from + uf.status_to = ?d 
	OR
	(uf.status_from = ?d AND uf.status_to = ?d )
	)
ORDER BY RAND() 
LIMIT 6;


Нужна хотя бы наводка, куда копать.

3 комментария

avatar
ORDER BY RAND() — зло. Перемешайте готовый массив и возьмите нужное кол-во первых элементов.
avatar
Я знаю что ранд — зло. Вот и думаю как сделать то, что Вы посоветовали.
avatar
Решил воспользоваться php функцией shuffle.
Пока оставлю как временное решение.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.