【发布时间】:2017-08-31 18:11:28
【问题描述】:
在我的代码中,它将数据从 SQL Server 中的存储过程流式传输到 .csv 文件中,我有这个:
...
using(SqlDataReader reader = cmd.ExecuteReader())
{
...
}
代码运行得很慢。
我摆脱了以下使用指令:
...
SqlDataReader reader = cmd.ExecuteReader()
...
现在它运行得更快了。造成这种性能差异的原因是什么?
代码在一个存储过程中触发一个相对简单的 SQL 脚本,它返回 3 列宽的 200 万行数据。
【问题讨论】:
-
使用 statement 与 using directive 不同
-
@whytheq 你的问题描述了一个 using statement。 using 指令是导入命名空间的内容(即
using System.Linq;) -
是的,应该没有任何显着差异。
-
你能描述一下区别吗?在性能方面,我不倾向于相信人们的直觉。
-
OP,尝试分析 SQL 并检查逻辑读取与物理读取。如果物理读取较低,则可能意味着数据已经缓存在内存中,这可能会在您第二次运行查询时发生。
标签: c# sql-server performance