データベースビューを使用するシステムがあります。これは、いくつかの参照テーブル(ルックアップ)からデータを取り出し、固定および静的)の場所に移動し、データのビュービューをアプリケーションに戻します。生成された正規化されていないビューテーブル
新しい要件が追加されているため、このビューは低速になりつつあります。
通常の表を作成し、ビューからこの表に選択し、その索引付けされた高速表を使用して問合せを行うことが、解決策です。
問題は、基本となるテーブルが変更された場合、新しいテーブルに古い結果が表示されることです。しかし、この表を駆動するデータは非常に頻繁に変化しません。そしてもしそうであれば、ビジネス/技術プロセスが作成されます。つまり、このデータを更新するために「テーブルを更新」プロシージャが実行されます。または、プライマリ駆動テーブルの更新/挿入トリガさえ?
この練習はアドバイスですか?それをより安全にする方法はありますか?
あなたはキャッシングと考えることができます。数分ごとに複雑なクエリの結果をテーブル/キャッシュに更新/リフレッシュするので、ユーザーは数分前のデータが表示されます。それはあなたのために受け入れられるかもしれません。また、[インデックス付きビュー](https://msdn.microsoft.com/en-AU/library/ms191432.aspx)も参照してください。しかし、彼らはむしろ[厳しい制限](https://www.brentozar.com/archive/2013/11/what-you-can-and-cant-do-with-indexed-views/)を持っています。 –
ありがとう@VladimirBaranov - それは役に立ちます。インデックス付きビューを使用したかったのですが、ビュー内で、またはビューで使用される関数内でピボットを行う必要があるため、制限を破っています。私の唯一の選択肢は、キャッシュされたテーブルのようです。 – Craig