2016-05-04 3 views
0

私は大規模な表を持っています。72列と数千万の行の財務データがあり、内容の半分以上(40列が有効)はです。ほとんどの場合、デフォルト値は常にです。この表は主にバッチ処理で使用され、これらの列には、エッジの場合にこのエンティティで発生する例外的なイベントに関する情報が含まれ、ほとんどが手動で管理されます。多くの "例外"列を持つ大きな表

主な懸念は、この表を変更する必要がある場合、Liquibaseの更新に数時間かかることです。

この構造体を1対1の関係でグリッドにリンクされたいくつかのテーブルで置き換えることは意味がありますか?私はMySQLの環境でLEFT JOINが多すぎるとコストがかかるので、何十ものオプションテーブルを持つことは望ましくありません。私はこれがスキーマを非正規化することを意味することを知っています。多くのテーブルは同じ識別子を共有しますが、ヌルカラムはあまり良くありません。

答えて

0

私はこれに答えるだけでは不十分だと思いますが、まれなイベントの場合は、アクセスする頻度が問題です。

稀なイベントをセカンダリテーブルに分割すると、あなたのアクセスパターンによってはシステムが高速化する可能性があります。もちろん、データに常にアクセスする必要がある場合は、問題があり、そこには無料のランチがないかもしれません。

0

はい、テーブルを分割し、1対1の関係を使用してリンクすることは理にかなっています。

左外部ジョインがあまりにも心配な場合は、メインのキーですべてのテーブルを挿入し、ビジネスシナリオに応じて列を更新することができます。このようにして、すべてのテーブルを等しく結合し、パフォーマンスへの影響を減らすことができます。

関連する問題