0

従業員は、Webサイトを介してサーバーからデータ(行全体)を読み取ります。

それらによって読み取られるデータである行は、10を超えるテーブルを含むかなりの数の結合の結果です。

質問:

1.読み取る最終結果データを含む新しいテーブルを作成して更新する必要があるので、プレゼンテーション層でテーブルからトップ1を選択するだけですか?

2.または、その1つの行を取得するために、Select ...と一連の結合、乗算などを実行する必要がありますか?


これから始めようとしています。最初に管理する必要があるのは、データを使用して大きな新しいテーブルを作成することでしたが、テーブルによる正規化に注意しているため、この質問が表示され、新しいテーブルを作成すると結果が得られます。データの冗長性。

目的の製品は、従業員のWebページができるだけ速くデータにアクセスすることであると言わなければなりません(これが、最初に新しいテーブルの作成と更新を考えた理由です)

ありがとう。


編集

約300人(将来的には1,000人)がWebサイトにアクセスする予定です。彼らはこの1つの行をクエリし、それと関係があることを実行してから[OK]をクリックして、新しい行を取得します(クエリとクエリの間に2分かかると推測します)。私たちが起こりたくないのは、従業員は常にコーチングを受けることになるということです。これらのコーチング要因の1つは、彼らが連続して作業するのにかかる時間です(私が言わなければならないクライアント)。したがって、クエリに時間がかかりすぎる場合(すべての更新の間隔が「長すぎる」場合)、これを考慮に入れるための新しい方法を構築する必要があります。そしてもちろん、私はしたくないです。


編集2

[OK]をクリックすると、別のクエリがトリガーされてデータベース内のデータが更新され、次に元のクエリがトリガーされて、別の行がWebページに送信されます。

4

3 に答える 3

1

目的の製品は、従業員のWebページができるだけ速くデータにアクセスすることであると言わなければなりません

なぜそれはできるだけ速くなければならないのですか?0.1秒で実行される場合、それは十分に速くありませんか?

クエリをループで実行しているためですか?その場合は、一度に1行ではなく、一括でデータをフェッチするように戦略を変更することをお勧めします。

何らかの理由で本当にできるだけ高速にする必要がある場合は、そうです。事前に計算された結果を用意しておくと、元のデータソースからクエリを作成するよりも高速になります。テーブルにデータを入力することは、これを実現する1つの方法です。もう1つの方法は、キャッシュメカニズムを使用して、リクエストが最初は遅くなるだけで、同じデータに対する繰り返しのリクエストは速くなるようにすることです。

結果を事前に計算するか、キャッシュを使用するとパフォーマンスが向上しますが、元のデータが変更されたときに古いデータで問題が発生する可能性があることに注意してください。

于 2012-07-24T22:47:10.337 に答える
1

最初に通常のビューから始め、パフォーマンスの問題がある場合にのみ、それを具体化します(インデックス付きビュー、または手動で新しいテーブルを作成してデータを入力します)。

于 2012-07-24T22:50:13.900 に答える
1

正規化されたデータベースを使用して、非正規化されたデータやより高速なクエリよりもコストがかかる可能性のあるクエリを実行したいと思います。2番目のシナリオでは、キャッシュテーブルが最新であることを確認するだけでなく、これらのシナリオを考慮して、そのデータの中心となるすべてのロジックを書き込む必要があるため、メンテナンス/可読性の問題が発生する可能性があります。

頻繁にアクセスされる場合は、不要な呼び出しを防ぐために、このデータ(asp.net?)を取得するクライアントにキャッシュを実装することをお勧めします。

于 2012-07-24T22:51:02.010 に答える