C#MVC中的LINQ查询响应时间对特定表(在SQL Server中)的记录数有什么影响

时间:2018-12-05 06:10:00

标签: ajax asp.net-mvc linq-to-sql sql-server-2008-r2 query-performance

我对主题名称进行了一些搜索,但是没有找到有用的答案。大多数问题是关于表的列数对查询性能的影响,而我需要知道在C#MVC项目中表的行数对linq查询响应时间的影响。实际上,我有一个Web MVC项目,在该项目中,我尝试使用来自服务器的ajax调用来设置警报并将其显示在客户端的Web网格中。在使用setTimeOut方法创建的循环中,每个ajax调用每60秒执行一次。警报表(在SQL Server数据库中)中的行数逐渐增加,一周后,达到数千行。起初在午餐项目时,我可以在浏览器(Chrome)的DevTools中看到,每个ajax调用花费的时间约为1秒左右。但是这个时间每天都在增加,一周后每次成功调用ajax都需要2分钟以上的时间。这导致大约5个ajax调用始终处于待处理队列中。我确定在客户端(JQuery)和服务器(C#)端代码中都没有内存泄漏,因此,我怀疑的唯一罪魁祸首是对警报表执行的SELECT Query响应时间。我感谢任何建议。

1 个答案:

答案 0 :(得分:0)

检查在数据库中执行的查询。有两种选择:

  1. 您的Linq查询从数据库中提取所有数据并在本地进行处理。在这种情况下,表中的行数非常重要。您需要修复Linq查询,并确保它仅从数据库中获取相关行。然后您可以点击选项2。
  2. 您的Linq查询仅从数据库中获取相关行,但是表中没有相关索引,并且每个查询扫描表中的数据所有

但是,在您的表中只有几千行的情况下,我怀疑扫描表将花费2分钟的时间,因此选项1更有可能是造成此速度下降的原因。