需要帮助优化此查询

时间:2012-12-09 08:29:11

标签: c# entity-framework .net-3.5 query-optimization sql-server-ce-3.5

我的SQL Server CE数据库首次运行查询存在很大问题。

我已经应用了此优化Performance and the Entity Framework,但仍然是第一次查询需要15 sec才能运行。

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

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

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

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

我有一些问题:

  1. 我想知道在我的应用程序启动时加载到Ram的资源是什么?
  2. 为什么我的应用程序在第二次运行时速度很快?
  3. 如何在应用程序启动之前将这些资源加载到Ram中?
  4. 为什么这些资源会一直存在,直到Windows重启?
  5. 也许15秒是好的,但是当我从DVD运行我的应用程序时,需要45秒才能运行第一次查询。

    被修改

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

    例如此查询第一次运行表单需要11秒:

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

    表格结构

    enter image description here

1 个答案:

答案 0 :(得分:1)

  

首先(data => data.ID == SubjectID)

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

这个SMELLS就像“我不知道索引是什么”。选中“Use-the-index-luke.com”。

同时确保

  

也许15秒是好的,但是当我从DVD运行我的应用程序时,需要45秒才能先运行   查询

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