1

私のウェブサイトには投稿システムがあり、3種類の投稿があります

  1. 写真
  2. ビデオ
  3. 再投稿

このデータを管理するために4つのテーブルを使用します

  1. 役職
  2. 写真
  3. ビデオ
  4. 再投稿

サイトに投稿されるすべての写真、ビデオ、再投稿には、likecount、commentcountなどを保持するための1つの投稿行があります。

コメントが高く評価された回数、または何かが削除された回数を照会する必要があります。

私はその間を知りたい

  1. 1つのテーブル、多くの列、多くのnull行、1回限りのクエリ
  2. 複数のテーブル、null行が少ない、何度もクエリ

どちらがより良く、より速いですか?

4

4 に答える 4

3

これらのタイプの質問によくあることですが、この答えは「状況によって異なります」です。

4つのテーブルを単一行、複数列の結果セットにコンパイルするデータのVIEWを作成してみることをお勧めします。このビューと、必要に応じてビューにインデックスを付けることもできINSERT INTOます。これにより、データをどのようにモデル化するかがよくわかります。

極端な例として、次のようなものがあります。

  • 複数のテーブル、複数のインデックスが必要な場合(1行のようにすべてを元気に保ちたい場合)、より多くのストレージスペースが必要になります。
  • ただし、これは、データテーブルをさまざまなファイルグループとストレージ領域に保存できるため、より大きく、より高価なバイナリデータがより高価なドライブスペースを消費しないことも意味します。

もう一方の極端な例は次のとおりです。*結合を必要とせず、必要なものがすべて揃っている1つのテーブル*ただし、1つのファイルファイルグループに保存され、投稿タイプを追加すると制御不能に増大するという負担があります。

そして、真ん中のどこかに、(インデックス付きの)ビューがあります。

于 2013-02-26T15:31:59.023 に答える
2

「どちらがより良く、より速いですか?」

どちらのオプションも優れているとは思いません。通常、1つのテーブルの方が高速で、複数のテーブルの方が「優れている」ので、保守が簡単で、データの重複が発生しません。検索の速度が主な関心事である場合は、1つのテーブルを正当化できます。そうでない場合は、正規化に固執します http://en.wikipedia.org/wiki/Database_normalization

複数のテーブルがある場合でも、優れたインデックスは取得速度に大きな違いをもたらす可能性があり、他の人が言っているように、データをまとめるためのビュー/ストアドプロシージャを検討する価値があるかもしれません

于 2013-02-26T15:32:22.323 に答える
2

これに対する簡単な答えはありません。

データを多数のテーブルに分割する場合は、より複雑なSQLを作成する必要がありますが、データベース管理者は各テーブルを異なるディスクに配置できるため、データの読み込みが高速になります。

インデックスは異なるディスクに配置できるため、検索パフォーマンスはこれに影響されません。

したがって、これは、データベースアーキテクチャ、データの量、インデックス、およびそれらがディスクに割り当てられる方法、およびデータベースオプティマイザが正しい戦略を選択するかどうかによって異なります。

于 2013-02-26T15:35:06.330 に答える
1

単一のテーブルを使用すると、JOINのオーバーヘッドがなくなるため、おそらくより高速になります。

ただし、設定によっては、ビューまたはストアドプロシージャを使用して、さまざまなテーブルからデータをまとめることができます。クエリ実行プランをキャッシュ/最適化できるため、これらによりJOINの効率が向上します。

于 2013-02-26T15:28:23.927 に答える