вставка и обновление постоянно. лучше ли иметь один огромный стол или 2 меньших стола - PullRequest
2 голосов
/ 22 января 2010

в эти таблицы будут постоянно вставляться новые строки или обновления.

У меня есть большая таблица, содержащая, URL видео, заголовок, описание, теги, просмотры, рейтинг, комментарии

Должен ли я разделить это на 2 таблицы поменьше

id видео URL, заголовок, описание

и ссылку на это выше.

id video_id, теги, просмотры, рейтинг, комментарии

Ответы [ 3 ]

5 голосов
/ 22 января 2010

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

Если перечисленные вами столбцы не требуют пояснений, я бы разбил их на три таблицы:

  • видео - videoId,url,title,description,rating,views
  • video_tags - videoId,tag
  • video_comments - videoId,comment

Это позволит вам иметь одну запись для каждого видео, сохраняя первичную информацию только один раз. Затем вы можете связать видео с несколькими тегами и несколькими комментариями.

0 голосов
/ 22 января 2010

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

0 голосов
/ 22 января 2010

То, что вы описываете, называется «вертикальным разделением». Будет ли это полезно, зависит от того, выделяете ли вы столбцы переменного размера в одну таблицу. Вы также можете разделить таблицу по горизонтали. Прочитайте Повышение производительности базы данных с помощью секционирования для получения дополнительной информации о том, какой (если таковой имеется) тип разделения поможет.

Как отмечают другие, сначала нормализуйте данные, затем денормализуйте, только если вы не получаете нужную производительность.

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