首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高LINQ查询性能?

提高LINQ查询性能?
EN

Stack Overflow用户
提问于 2013-10-18 07:47:19
回答 2查看 125关注 0票数 1
代码语言:javascript
复制
public List<Agents_main_view_distinct> getActiveAgents(DateTime start, DateTime end)
    {
       myactiveagents = null;            
       myactiveagents = mydb.Agents_main_view_distincts.Where(u => u.Status.Equals("Existing") && u.DateJoined2 >=start && u.DateJoined2 <=end).OrderByDescending(ac => ac.Recno).ToList();            
       return myactiveagents;
     }

我有一个简单的LINQ查询,查询一个view.My,担心的是它的性能。它能很好地处理几百张唱片,但当记录超过2000份时。SQL服务器超时。

我为提高成绩所做的事情。

  1. 编写了一个直接查询表的查询(没有改进)。
  2. 减少不必要的列,以前它有27列,减少到20列。

在一次绝望的尝试中,我将服务器超时时间增加到600。但它仍然是超时的时候。

查看SQL查询

代码语言:javascript
复制
SELECT dbo.Agents.Recno, dbo.Agents.Rec_date, dbo.Agents.AgentsId, dbo.Agents.AgentsName, dbo.Agents.Industry_status, dbo.Agents.DOB, dbo.Agents.Branch, 
                  dbo.Agents.MobileNumber, dbo.Agents.MaritalStatus, dbo.Agents.PIN, dbo.Agents.Gender, dbo.Agents.Email, dbo.Agents.ProvisionalLicense, 
                  dbo.Agents.IRALicenseNumber, dbo.Agents.PreviousCompany, dbo.Agents.YearsOfExperience, dbo.Agents.COPNumber, dbo.Agents.DateJoined AS DateJoined2, 
                  dbo.Agents.DateJoined, dbo.Agents.PreviousOccupation, dbo.Agents.ProffesionalQualification, dbo.Agents.EducationalQualification, dbo.Agents.Status, 
                  dbo.Agents.Termination_Date2 AS Termination_Date, dbo.Agents.Comments, dbo.Agents.Temination_code, dbo.Agents.Company_ID, dbo.Agents.Submit_By, 
                  dbo.Agents.PassportPhoto, dbo.Insurane_Companies.Company_name, DATEDIFF(year, dbo.Agents.DOB, GETDATE()) AS age, YEAR(dbo.Agents.DateJoined) 
                  AS YearJoined, YEAR(dbo.Agents.Termination_Date2) AS YearTermination, dbo.Agents.REGION, dbo.Agents.DOB AS DOB2, 
                  dbo.Insurane_Companies.Company_code
     FROM         dbo.Agents INNER JOIN
                  dbo.Insurane_Companies ON dbo.Agents.Company_ID = dbo.Insurane_Companies.Company_id
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-18 09:49:47

您可以尝试将WhereOrderBy子句移动到视图本身,在必要时使用存储过程/用户定义的函数传递参数。

还可以将一瞥添加到项目中。在许多其他事情中,您可以检查SQL调用,以查看是否有任何不必要的或耗时的DB命中。

票数 0
EN

Stack Overflow用户

发布于 2013-10-18 09:27:40

正如James所建议的,最好创建一个存储过程并通过LINQ调用它,传递任何必要的参数。这样,服务器将处理应该更快的处理,因为查询不必转换回要处理的SQL。除此之外,您还可以使用SQL的Query或Profiler查看瓶颈可能是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19444295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档