这是用于自定义社交网络。任何用户都有“个人资料设置”
用户可以更改大约 30 种设置,因此有一些类别:
- 配置文件设置
- 短信 | 邮件通知
- 授权设置
- 安全设定
- 访问设置
我制作了几个保留设置的表(ENUM 类型)
如果我将该设置放入小表中,像这样(当然唯一的用户 ID 将被索引)
(用户 ID 是选项卡中任何地方的主键)
CREATE TABLE user_profile_settings ( ... ) type=MyISAM;
CREATE TABLE user_profile_notif ( ... ) type=MyISAM;
CREATE TABLE user_profile_auth ( ... ) type=MyISAM;
CREATE TABLE user_profile_security ( ... ) type=MyISAM;
CREATE TABLE user_profile_access ( ... ) type=MyISAM;
然后一个请求会同时归结为几张桌子,这也意味着一些性能下降。这样做的好处是:如果我只想从 user_profile_settings 中读取,我只要求从该表中获取索引 id。
第二种方法是:为用户拥有的所有用户设置创建一行,如下所示:
CREATE TABLE all_user_config ( /***/ ) type=MyISAM;
它包含大约 30 个列,但是维护整个系统有点困难。
问题是:推荐哪种方法适合十亿行?