データベースには、いくつかのテーブルの最終更新値を返すビューがあります。これは、これらのテーブルがアプリケーションによって変更について直接クエリされるのを防ぐためです。アプリケーションはマルチ ユーザー環境にあり、これらのテーブルは短いバーストで頻繁に更新され、一度に何時間も無視される可能性があります。
私はと呼ばれるビューを持っていますvwLastUpated
CREATE VIEW vwLastUpdated as
SELECT Tasks, Items, ListItems FROM
(Select Max(ModifiedTime) as Tasks from tblTasks) a CROSS JOIN
(Select Max(ModifiedTime) as Items from tblItems) b CROSS JOIN
(Select Max(ModifiedTime) as ListItems from tblListItem) c
クライアントは、約 10 ~ 30 秒ごとにこのビューを呼び出すように構成されています (ユーザーが構成可能)。問題は、多くのクライアント (1 つのサイトで約 80) がある場合、ビューが非常に頻繁にヒットし、場合によっては時間がかかることです。実行には数ミリ秒かかりますが、更新が発生している場合は実行に 200 ~ 300 ミリ秒かかることがあります。これは、頻繁に使用しているときにフロント エンドの速度を低下させているようです。テーブルは で適切に索引付けされていModifiedTime DESC
ます。
これらのサイトでは SQL Express を使用している場合もあれば、フル バージョンの SQL を使用している場合もあり、別の方法でビューを設計し、エージェントを使用して共通テーブルを更新できますtblLastUpdated
( 5秒。
プロセスを効率化し、SQL Express が使用されているデータベース サーバーの負荷を軽減するにはどうすればよいですか?
クライアント サイトは、SQL Server 2008 以降 (SQL 2012 まで) 上にある