これはカスタムソーシャルネットワーク向けです。 |多くのENUMではどちらのアプローチが優れていますか?
- プロフィール設定
- SMS: すべてのユーザーは、 "プロファイル設定" ユーザーが変更することができますがあり
約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;
次に、一度に1つのリクエストがいくつかのテーブルに送られます。 これの利点は次のとおりです。user_profile_settingsからのみ読み込むことができたら、私はそのテーブルからindex'ed idを要求します。
第二のアプローチは、すべてのユーザー設定のユーザのための一つの行を作成するために、このようにしている:
CREATE TABLE all_user_config (/***/) type=MyISAM;
それは約30 columsを含むが、システム全体を維持するために少し難しくなります。
質問は: どのアプローチが推薦され、10億行に適していますか?
私は同意します。なぜなら、単一のテーブルを持つことは、物事をより保守性にする傾向があるからです。ただし、テーブル全体のキーを4バイトとして格納する状況になる可能性がありますが、個々の値に対して1バイトの値を得ることができます。行の長さが重要な関心事である場合は、別の方法を試してみるとよいでしょう。 –