假设我有这样一个表:
create table users (
user_id int not null auto_increment,
username varchar,
joined_at datetime,
bio text,
favorite_color varchar,
favorite_band varchar
....
);
随着时间的推移,越来越多的列,比如favorite_animal、favorite_city等,被添加到这个表中。最终,会有20个或更多的列。
此时,我感觉应该将列移到一个单独的"user_profiles"表中,这样我就可以执行"select * from users"而不返回大量通常无关的列(比如favorite_color)。当我需要按favorite_color查询时,只需像这样操作:
select * from users inner join user_profiles using user_id where
user_profiles.favorite_color = 'red';
将主表中的列移出到“辅助”表中是一个好主意吗?
还是最好将所有列保留在“用户”表中,并始终明确要返回哪些列?例如:
select user_id, username, last_logged_in_at, etc. etc. from users;
这里涉及哪些性能考虑因素?
select *
上阅读:为什么SELECT *被认为是有害的? - Ocaso Protal