1. ホーム
  2. mysql

[解決済み] どちらがより効率的か。複数のMySQLテーブルと1つの大きなテーブルのどちらが効率的か?

2022-08-25 06:02:27

質問

私は、MySQL データベースにさまざまなユーザーの詳細を保存しています。元々は、データが UserIds とリンクされ、必要に応じてデータを表示および操作するために、時には複雑な呼び出しを介して出力されることを意味するさまざまなテーブルで設定されていました。新しいシステムをセットアップする場合、これらのテーブルをすべて、関連するコンテンツの 1 つの大きなテーブルにまとめることは、ほとんど理にかなっています。

  • これは助けになるのでしょうか、それとも妨げになるのでしょうか。
  • 呼び出し、更新、または検索/操作における速度の考慮事項?

これは私のテーブル構造の例です。

  • users - UserId, username, email, 暗号化されたパスワード, 登録日, ip
  • user_details - クッキーデータ、名前、住所、連絡先、所属、デモグラフィック・データ
  • user_activity - 貢献、最後のオンライン、最後の閲覧
  • user_settings - プロファイルの表示設定
  • user_interests - 広告のターゲットとなる変数
  • user_levels - アクセス権限
  • user_stats - ヒット数、タリー数

編集してください。 これまでの回答はすべてupvoteしました。どれも本質的に私の質問に答えてくれる要素を持っています。

ほとんどのテーブルは1:1の関係を持っており、それが非正規化の主な理由でした。

テーブルが 100 以上の列にまたがる場合、これらのセルの大部分が空のままになる可能性がありますが、問題はないでしょうか?

どのように解決するのですか?

複数のテーブルを使用すると、次のようなケースに対応できます。

(a) 異なる人々が異なるテーブルを含むアプリケーションを開発する場合、それらを分割することは理にかなっています。

(b) データ収集の異なる部分について、異なる種類の権限を異なる人に与えたい場合、それらを分割する方が便利かもしれません。(もちろん、ビューの定義やそれに対する権限の付与を適切に検討することは可能です)。

(c) 特に開発中にデータを異なる場所に移動するために、より小さなファイルサイズをもたらすテーブルを使用することは理にかなっているかもしれません。

(d) 小さなフットプリントは、単一のエンティティの特定のデータ収集に関するアプリケーションを開発する際に、快適さを与えるかもしれません。

(e) 単一値のデータだと思っていたものが、将来的には複数の値になる可能性があります。しかし、明日になれば、その値を (date from, date to, credit value) のように変更することになるかもしれない。このような場合、テーブルを分割しておくと便利です。

私は、データを適切に分割した複数のテーブルに一票を投じたいと思います。

がんばってください。