我们有一个查询,它需要2秒钟才能在Sql Server Management Studio中运行,但是要花13秒钟才能显示在客户端屏幕上。
我使用dotTrace剖析了我的源代码,并注意到有一个SNIReadSync方法(ADO.net程序集的一部分)需要很多时间(9秒)来完成工作。我在服务器上运行了源代码,因此可以省略网络效果和结果是相同的。
我使用OleDBConnection还是SqlConnection都没有关系。
我使用的是DataReader还是DataSet都没有关系。
连接池不能解决此问题(如我的结果所示)。
我在此问题上进行了搜索,但找不到该方法实际上在做什么以及我们如何对其进行改进的问题的答案。
这是我在StakOverFlow上发现的,也没有帮助:
https://stackoverflow.com/questions/1610874/snireadsync-executing-between-120-500-ms-for-a-simple-query-what-do-i-look-for
最佳答案
暂时忽略SNIReadSync
(我认为这可能是个红色鲱鱼)。
您所描述的症状听起来像是一个错误缓存的查询计划。
请更新您的统计信息(或重建索引),看看是否仍然存在。