В вашей таблице Users у вас есть поле для сохранения отметки времени для последнего входа в систему.В вашей таблице, где хранятся дружеские отношения, у вас есть 1 строка на каждое отношение, и это делает таблицу очень длинной.
То есть объединение этих таблиц кажется плохим, и мы должны как-то оптимизировать этот процесс?Ответ: нет, не обязательно.Люди, которые создают СУБД, имеют те же проблемы, что и вы, и они реализуют инструменты для их решения.Каждая СУБД имеет своего рода оптимизацию запросов, которая умнее вас и меня.
Так что стыдно объединять длинные таблицы.Если вы хотите попробовать оптимизировать, вы можете:
- Получить идентификаторы друзей пользователя.
- Получите необходимую информацию о первых 10 друзьях, отсортированных по last_login desc, где подходит идентификатор (и другие, где условия).
Вам не нужно вступать в таблицы,но вы будете использовать два запроса, так что, возможно, если ваша СУБД умна, соединение будет быстрее (возможно, запустите тест).
Если вы хотите, вы можете использовать ajax для загрузки этих данных после загрузки страницы,это улучшит взаимодействие с пользователем, но трафик на БД будет таким же.
Надеюсь, это помогло.
Редактировать: О да, если вы уже знали идентификаторы друзей (выони нужны для других вещей) тебе даже не понадобится соединение.Вы можете передать идентификаторы в javascript, который загружает последний список входа позже через AJAX.