Производительность запросов в одной таблице

#mysql #performance

#mysql #Производительность

Вопрос:

Я разрабатываю сайт для ответов на вопросы. Ранее я создавал две таблицы: сообщения и ответы. Можно ли (запрос времени выполнения) объединить эти таблицы в один «posts», поскольку есть сходство в таких полях, как vote_up, down, flag и так далее.

Спасибо за отзывы, ребята, это таблица

 CREATE TABLE IF NOT EXISTS 'posts' (
'id' int(10) unsigned NOT NULL AUTO_INCREMENT,
'date_created' datetime NOT NULL,
'date_edited' datetime DEFAULT NULL,
'post_type' tinyint(1) DEFAULT NULL,
'parent' int(10) unsigned DEFAULT NULL,
'user' int(10) unsigned NOT NULL,
'title' varchar(255) DEFAULT NULL,
'slug' varchar(255) DEFAULT NULL,
'content' text NOT NULL,
'post_status' tinyint(1) DEFAULT NULL,
'vote_up' int(10) unsigned DEFAULT '0',
'vote_down' int(10) unsigned DEFAULT '0',
'answered' tinyint(1) DEFAULT NULL,
'flag' tinyint(1) DEFAULT NULL,
PRIMARY KEY ('id')
)
 

Комментарии:

1. Одна вещь, которую вы действительно хотите иметь в виду, — это нормализация ваших данных (при условии, что вы используете реляционную базу данных). Если у вас действительно старое оборудование или миллионы записей, я бы не стал делать то, что вы предлагаете.

2. Опубликуйте свою схему, и мы сможем помочь вам немного лучше

3. @hafichuk вы говорите, что присоединение к ним увеличит производительность?

4. @Moss нет, совсем наоборот. Если нет веских оснований для денормализации данных, я бы не рассматривал это как возможную оптимизацию.

Ответ №1:

Конечно, там нет значимого снижения производительности. Что делает некоторое программное обеспечение для форумов, так это то, что у него есть таблица для каждой темы и таблица для сообщений. Когда создается новая тема (ваш вопрос), содержимое публикации помещается в таблицу post, а таблица темы используется для заголовка, идентификатора, возможно, некоторой категоризации и так далее.

Ответ №2:

При правильном индексировании не было бы заметного снижения производительности. Я предполагаю, что соединения между двумя разными таблицами иногда могут быть быстрее, чем объединение одной объединенной таблицы с самой собой. Но я думаю, что это скорее логическое решение. Имеет ли смысл рассматривать вопрос и отвечать одинаково? Если существует более нескольких полей, относящихся исключительно к одному или другому типу, лучше хранить их отдельно.