MySQL - лучшая производительность между 2 решениями - PullRequest
1 голос
/ 21 октября 2011

Мне нужен и совет по поводу MySQL.

У меня есть пользовательская таблица с id, псевдонимом, numDVD, деньгами и таблицей DVD с idDVD, idUser, LinkPath, счетчиком.

Теперь я верю, что мог получить макс. 20 пользователей и каждый пользователь имеет около 30 DVD.

Поэтому, когда я вставляю DVD, у меня должны быть idDVD (автоинкремент), idUser (то же самое idUser таблицы User), LinkPath (общая строка) и счетчик, что это число от 1 до 30 (уникальный номер) ( зависит от номера или DVD) для каждого пользователя.

Проблема в том, что обработать последний столбец «счетчик», потому что я выбрал бы, например, 2 3 случайных DVD от 1 до 30 с одинаковым идентификатором пользователя.

Поэтому я подумал, является ли это лучшим решением в моем случае и трудным для обработки (для меня я никогда не использовал MySQL) ИЛИ лучше создать 20 таблиц (по 1 для каждого пользователя), которые содержат идентификатор, имя DVD и т. Д.

Спасибо

Ответы [ 3 ]

3 голосов
/ 21 октября 2011

Не создавайте 20 таблиц!Это было бы излишним, и что, если вам нужно будет добавить больше пользователей в будущем?Надежно поддерживать и обновлять практически невозможно.

Лучший способ будет выглядеть так:

Table users
-> idUser
-> other user specific data

Table dvd
-> idDvd
-> DVDname
-> LinkPath
-> other dvd specific data (no user data here)

Table usersDvds
-> idUser
-> idDvd

Таким образом, нет проблем, если один или несколько пользователей имеют один и тот же DVDпоскольку это просто еще одна запись в таблице usersDvds - значение idDvd будет таким же, но idUser будет другим.А чтобы посчитать, сколько DVD у пользователя, просто сделайте SELECT count(*) FROM usersDvds WHERE userId = 1

1 голос
/ 21 октября 2011

Вам не нужна таблица для каждого пользователя, и это сделает невозможным последующее программирование на SQL. Однако с этими объемами данных практически ничего, что вы делаете, не вызовет и не устранит узкие места. Весьма вероятно, что вся база данных поместится в память, поэтому доступ через любую схему будет практически мгновенным.

0 голосов
/ 21 октября 2011

Если я четко понимаю ваши требования, вы сможете выполнить это, создав составной индекс, чтобы вы могли эффективно выбирать.

Если в этой таблице обрабатывается слишком много данных, это поможет очистить некоторые исторические данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...