Сохранить в одну таблицу или создать несколько таблиц?

Я нахожусь в ситуации дилеммы, и не знаю, какая из них лучше. Допустим, у меня есть 100++ (или более) игр на моем сайте. Я хочу хранить рекорды для каждой игры. Должен ли я хранить все рекорды в 1 таблице, или у каждой игры есть свой собственный стол?

Для сравнения:

1 таблица: 1 таблица содержит много строк (данных). Каждый пользователь, играющий в отдельную игру, выставит счет в эту таблицу. Не знаю, что произойдет, если много пользователей подадут заявку одновременно. Эта структура таблицы должна быть: gameID, name, score. Так что я просто делаю 1 запрос, чтобы просмотреть рекорд игры на 1 странице php.

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

Какой из них лучше в долгосрочной перспективе? Как насчет производительности SQL?

Я использую php и mysql.

2 ответа

Я бы сделал таблицу для игроков, одну для игр и таблицу "многие ко многим" для рекордов с player_id, game_id и значением рекорда.

обсуждение

Если у вас 100 000 игроков и 500 игр, вы можете получить максимум 50 000 000 записей. Но они числовые и очень короткие. Будет хорошей идеей, чтобы НЕ обслуживать эти рекорды, используя прямые запросы, но результаты из кэшированных файлов. Так делают почти все. Вы обновляете кэшированные списки рекордов каждый день. Таким образом, вы делаете записи в реальном времени и чтения из кэша, и они не мешают.

Еще одно предложение - ежемесячно обнулять таблицу рекордов или хранить более старые данные отдельно в зависимости от частоты доступа. Facebook делает что-то вроде этого, как я видел в презентации их ведущего разработчика.

Вы должны пойти с опцией единого стола. Таким образом, когда вы добавляете больше игр, вам не нужно менять схему базы данных.

Базы данных предназначены для работы с такими данными. Наличие одной таблицы с большим количеством данных не вызовет проблем, если она правильно проиндексирована.

Другие вопросы по тегам