Немного мыслей -
MySQL достаточно умен, чтобы справиться с таким количеством записей. Вы можете прочитать всех пользователей и их книги в одном запросе, а затем отобразить их по своему желанию. Однако показ этих многочисленных записей на одной веб-странице повлияет на время отклика.
Отсюда следует разбиение на страницы - читать ограниченные записи на странице. Хотя это будет означать SQL-запрос на страницу, но все же оптимизирован. И, конечно же, вы можете использовать некоторое кэширование запросов.
Лучшим вариантом может быть отображение списка пользователей в алфавитном порядке, не обязательно A-Z, но также как AB, AC, AD и так далее. Таким образом, ваши посетители могут напрямую перейти к определенному списку. Попробуйте добавить нумерацию страниц, если число пользователей в данном списке слишком велико.
Я не уверен, насколько важно, чтобы ваш веб-сайт отображал последние обновления как можно скорее, но вы также можете подумать о создании файлов XML, сколько вам кажется необходимым, например, в алфавитном порядке и создании веб-страниц из файлов XML. , Вы можете обновлять эти XML-файлы один раз каждые 24 часа. Итак, минимальная загрузка БД.
И, пожалуйста, подумайте о создании поиска, потому что навигация по этим многочисленным пользователям может обескураживать.
Надеюсь, это поможет!