0

我的SQL Server CE数据库首次运行查询时遇到了一个大问题。

我已经应用了这个优化Performance 和 Entity Framework,但是第一个查询仍然需要15 sec运行。

当我第一次运行我的应用程序第一次查询时我注意到的东西大约需要 15 秒才能运行。

如果我关闭我的应用程序并再次运行,第一个查询会立即运行。因此,如果我重新启动 PC 并再次运行应用程序,则第一个查询需要 15 秒才能运行。

总的来说,经过两周的互联网研究,我找不到解决问题的好方法。

我使用了ANTS Performance Profiler,我注意到我的第一个查询大约需要 11 秒,而每个页面的表单初始化第一次需要 4 秒。

我有一些问题:

  1. 我想知道我的应用程序启动时加载到 Ram 的资源是什么?
  2. 为什么我的应用程序在第二次运行时速度很快?
  3. 如何在应用程序启动之前将这些资源加载到 Ram 中?
  4. 为什么这些资源保留在 Ram 中,直到 Windows 重新启动?

也许 15 秒很好,但是当我从 DVD 运行我的应用程序时,运行第一个查询需要 45 秒。

已编辑

我为我的应用程序的每个部分使用了多个数据库。

例如这个查询 Take 11 sec to run form first time:

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

表结构

在此处输入图像描述

4

1 回答 1

1

首先(数据 => 数据.ID == 主题 ID)

好的,忘记实体框架。获取生成的 SQL 代码,通过分析器运行它。

这闻起来像“我不知道索引是什么”。选中“使用-the-index-luke.com”。

还要确保

也许 15 秒很好,但是当我从 DVD 运行我的应用程序时,运行第一个查询需要 45 秒

实际上是sql语句。它可以很容易地加载和初始化您的应用程序,在这种情况下,您会在这里问一个完全不相关的问题。在这种情况下,您无能为力 - 仍然有优化等,但您必须在这里提出具体问题,即做好功课,然后这里的问题就完全无关紧要了。顺便说一句,这包括初始化实体框架所需的时间——这与查询本身无关,但可能发生在您运行的第一个查询上。

于 2012-12-09T09:25:50.870 回答