0

別の 50 以上のテーブルの DB スキーマ (MySQL 内) を拡張しようとしています。それらのうち約 15 ~ 20 がテーブルを参照しますFile(プロジェクトで作成またはアップロードされたファイルのデータを保存します)。

  • そのシナリオをそのままにしておく
  • テーブルごとに独自のFileテーブルを作成する

私が尋ねているのは、最初のオプションを選択すると、ある時点でFile大量の行があり、CRUD 操作が ( whereclausule を使用して) 遅くなるからです (私は推測します)。それで、あなたはどう思いますか、最高のアイデアは何ですか?

4

1 に答える 1

1

Fileに格納されているさまざまなタイプの行に大幅に異なる属性がない限り、他のすべてのテーブルから参照される1 つの中央テーブルを保持しFileます。つまり、File関連付けタイプごとに異なるファイル メタデータ セットをテーブルに格納する場合、メタデータ タイプごとに異なるファイル ストレージ テーブルが必要になる場合があります。

ただし、ファイル バイナリ データ、ファイル名、MIME タイプなどの同じセットを格納している場合は、通常、関連するすべてのタイプについて、1 つのテーブルに属します。

テーブルが非常に大きくなると予想される場合は、そのストレージを分割することを検討してください。適切なインデックス作成により、CRUD 操作は数百万行にわたって実行できます。

于 2012-07-14T12:37:57.063 に答える