毎日1M行追加された特別なSQL Serverテーブルを設計しています。表には3つのフェーズがあります。大きなテーブルの物理的な設計に役立つ、3つのステージに配置された行がある場合
状態1:新しい行を挿入し、列1-15移入すなわち、エンティティのライフサイクルは、4つの状態を有することを意味します。残りの列はNULLのままです。
状態2:更新(を移入)カラム16-25
状態3:更新(を移入)カラム26-40
状態4:行がレポートのために処理することができます。各行が作成された後、彼らが取り込まれているので
は列16-40の- すべてがNULL可能である必要があります。
上記の要件は、以下の非効率性を課します。
- 各行が作成された後に少なくとも2組のNULL列がpupated(更新)されるため、多くの断片化が発生します。
私はこのエンティティを3つのテーブルに分割することを考えていましたが、それを行うと、レポート中に3つのテーブルを結合する必要があります。 この表をより効率的にするための技術やパターンはありますか?
あなたが説明したアイデアは、列が時々使用される(塗りつぶされた)ときにうまく機能します。ここでの要件は異なります。すべての行の列が塗りつぶされます。問題は、それらがINSERT時に移入されず、その後の更新があることです。ところで、あなたが説明したシナリオでは、Sparse Columnsを見てください。 –