これはカスタムソーシャルネットワーク用です。すべてのユーザーが「プロファイル設定」を持っています
ユーザーが変更できる設定は約30あるため、いくつかのカテゴリがあります。
- プロファイル設定
- SMS | 電子メール通知
- 承認設定
- セキュリティ設定
- アクセス設定
設定を保持するテーブルをいくつか作成しました(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からのみ読み取る必要がある場合は、そのテーブルのインデックス付きIDのみを要求します。
2番目のアプローチは、次のように、ユーザーが持つすべてのユーザー設定に対して1つの行を作成することです。
CREATE TABLE all_user_config ( /***/ ) type=MyISAM;
約30個の列が含まれていますが、システム全体の保守が少し難しくなります。
問題は、どのアプローチが推奨され、10億行に適しているかということです。