У меня есть столы users
а также posts
, Таблица users
есть столбцы user_id
а также username
и стол posts
есть столбцы post_id
а также user_id
,
Когда я получаю сообщения, я также хочу получить имя пользователя, так что лучше использовать JOIN между таблицами users
а также posts
получить имя пользователя или сохранить имя пользователя также в таблице posts
?
Как JOIN влияет на производительность, если у вас есть несколько миллионов строк в posts
а также users
таблицы?
Общепринятой практикой является использование оператора JOIN и отсутствие имени пользователя в таблице сообщений. Это нарушит нормальную форму и приведет к избыточным данным. Кроме того — что произойдет, если имя пользователя изменится? Тогда у вас есть две таблицы (пользователи, сообщения), которые больше не совпадают, потому что будут записи, где user_id не будет совпадать с именем пользователя. Просто некоторые вещи для рассмотрения.
Вот почему у нас есть RDMS, несколько миллионов строк не имеют большого значения для MySQL. Если вы думаете о сохранении имени пользователя в данных поста, вам следует подумать о базах данных NoSQL.