0

SQLServerCEデータベースからの最初のクエリの実行に大きな問題があります。

私はすでにこの最適化パフォーマンスとEntityFrameworkを適用しましたが、それでも最初のクエリが15 sec実行されようとしています。

アプリケーションを初めて実行したときに気付いたのは、最初のクエリの実行に約15秒かかることです。

アプリケーションを閉じて再度実行すると、最初のクエリがすぐに実行されます。したがって、PCを再起動してアプリケーションを再度実行すると、最初のクエリの実行に15秒かかります。

全体として、インターネットで2週間調査した後、問題を解決するための良い方法を見つけることができませんでした。

ANTS Performance Profilerを使用しましたが、最初のクエリに約11秒かかり、各ページのフォームの初期化に初めて4秒かかることに気付きました。

いくつか質問があります:

  1. アプリケーションの起動時にRamにロードされたリソースを知りたいですか?
  2. なぜ私のアプリケーションは2回目の実行で高速ですか?
  3. アプリケーションを開始する前に、これらのリソースをRamにロードするにはどうすればよいですか?
  4. Windowsが再起動するまでこれらのリソースがRAMに残るのはなぜですか?

15秒で十分かもしれませんが、DVDからアプリケーションを実行すると、最初のクエリを実行するのに45秒かかります。

編集済み

アプリケーションのセクションごとに複数のデータベースを使用しました。

たとえば、このクエリはフォームを最初に実行するのに11秒かかります。

public void GetContent(short SubjectID)
{
   new QuranOtherEntities(CDataBase.CSQuranOtherEntities))
   {
      CHtmlDesign.HtmlFile = QODB.AdabTbls.First(data => data.ID == SubjectID).Content;
   }
}

テーブル構造

ここに画像の説明を入力してください

4

1 に答える 1

1

最初(データ => データ.ID == SubjectID)

わかりました、エンティティ フレームワークは忘れてください。生成された SQL コードを取得し、プロファイラーで実行します。

これは、「インデックスが何であるかわかりません」のようなにおいがします。「Use-the-index-luke.com」をチェックしてください。

また、次のことを確認してください。

15 秒で十分かもしれませんが、DVD からアプリケーションを実行すると、最初のクエリを実行するのに 45 秒かかります

実際にはSQLステートメントです。アプリケーションのロードと初期化を簡単に行うことができます。その場合、ここでまったく無関係な質問をします。この場合、できることは多くありません - 最適化などはまだありますが、ここで特定の質問をする必要があります。つまり、宿題をして、ここでのこの質問はまったく関係ありません。これには、エンティティ フレームワークの初期化にかかる時間が含まれます。これは、クエリ自体には関係ありませんが、最初に実行したクエリで発生する可能性があります。

于 2012-12-09T09:25:50.870 に答える