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

问题描述

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

标签: ajaxasp.net-mvclinq-to-sqlsql-server-2008-r2query-performance

解决方案


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

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

但是,由于您的表中只有几千行,我怀疑扫描该表需要 2 分钟,因此选项 1 更可能是导致速度变慢的原因。


推荐阅读