データベースにはC#/ VB.Netで使用されるクラスを表すため、フィールドはXMLです。問題は最初の操作の後で、操作のすべてではなく、ほとんどがSQL Serverで行われます。つまり、XMLフィールドはオンザフライで変換されます。SQL ServerでのXMLの高速化 - テーブルへの変換?
フィールドとレコードが増えているので、この操作は遅くなります。私は、遅いのは、すべてのフィールドを他のデータ型に変換することだと思います。
ので、それをスピードアップするために、私はいくつかの方法を考えていた:
は、XMLデータの異なる部分を表すテーブルのセットを持っています。これらのテーブルは、Insert/Updateのトリガを使用してのみ読み込み、変更を拒否します。 XMLを更新したときのXMLを含む私の「メイン」テーブルは、トリガーをオフにし、新しい値でテーブルを更新し、トリガーを元に戻します。
私たちがXMLを使用する唯一の理由は、C#/ VB.Netのクラスに変換するのが本当に簡単だからです。しかし、私はすべてのビットとピースを取り、それをクラスに変換するルーチンと、逆に進む関数(クラス - >テーブル)を書くことになるかも知れないポイントを得ています。
これを行うには誰かより良いアイデアを提供できますか?私はXML構造を使用するというアイディアに縛られていません。私の関心事は、SQL処理を高速化するためにテーブルを別に用意し、誰かがそのテーブルのフィールドの値を変更して、XMLが更新されていることを確認する必要がある場合です。または、人にそれを更新させないでください。
TIA - Jeff。
C#クラスを表すこと自体が、リレーショナルテーブルの代わりにXMLを使用する特別な理由ではありません。 –
sqlでクラス表現を操作する場合、それはもはや信頼できる表現ではなく、したがって完全な空間の無駄です。あなたが「間違っている」ことを認め、xmlを捨て、クラスをテーブルデータからロードさせてください。 –