Когда лучше переместить столбцы из основной таблицы во вспомогательную?

Скажем, у меня есть такая таблица:

  create table users (
   user_id int not null auto_increment,
   username varchar,
   joined_at datetime,
   bio text,
   favorite_color varchar,
   favorite_band varchar
   ....
 );

Скажем, со временем все больше и больше столбцов, таких как избранное_animal, избранное_city и т. д., получают добавлен в эту таблицу. В итоге получается 20 или более столбцов.

На данный момент я чувствую, что хочу переместить столбцы в отдельный Таблица user_profiles позволяет мне выполнять выбор * из пользователей без возвращает большое количество обычно нерелевантных столбцов (например, любимый цвет). И когда мне нужно сделать запрос по favourite_color, я могу просто сделать примерно так:

select * from users inner join user_profiles using user_id where
user_profiles.favorite_color = 'red';

Перемещает столбцы из основной таблицы во «вспомогательную» таблицу. идея?

Или лучше оставить все столбцы в таблице users и всегда четко указывать столбцы, которые я хочу вернуть? Например,

select user_id, username, last_logged_in_at, etc. etc. from users;

Какие соображения производительности здесь задействованы?

7
задан dan 4 April 2011 в 13:26
поделиться