0

ユーザーのデータ量に対して結合が遅すぎるという大きなリスクがあるため、非正規化したテーブルがあります。そのため、10 列の情報 (INFO0、INFO1... INFO9) を作成しました。ほとんどの場合、最初の 2 ~ 3 列のみが使用され、他は null です。

しかしここで、それぞれ 10 列の情報をさらに 2 種類追加する必要があります (合計 20 列の新しい列)。注意が必要なのは、私たちの設計では、ユーザーが 30 個の非正規化列をすべて使用できないことです。いつでも、各行で最大 10 個を使用できます。さらに、さらに新しい非正規化列を追加する必要があるかもしれませんが、各行で 10 を超える列を使用することはできません。

良いデザインではないことはわかっていますが、選択の余地はありません。私の質問は、この設計が非効率になる可能性があるかどうかです。null 値を持つ列が多数あると、クエリが遅くなる可能性がありますか? はいの場合、それは大したことになる可能性がありますか?

4

1 に答える 1

1

はい、できました。使用しているデータベースや余分な列のデータ型はわかりませんが、列を追加するとテーブルの「幅」が増加します。つまり、同じ数のレコードを取得するには、より多くの論理読み取りが必要になります。 、読み取りが多いほど速度が遅くなります。したがって、非正規化によって得られるものは、列を追加しすぎると最終的に失われる可能性がありますが、その範囲はデータベースの設計によって異なります。

パフォーマンスに影響する場合は、中間の解決策として、テーブルを垂直に分割して、参照頻度の低い列を 2 番目のテーブルに配置することができます。

于 2013-03-27T17:30:36.463 に答える