【发布时间】:2012-08-29 05:34:48
【问题描述】:
我有一个从 SQL Server 表中获取数据的程序。代码如下:
SqlConnection conn=new SqlConnection(...);//correct
conn.Open();
DataTable dt=new DataTable();
SqlCommand selectCMD = new SqlCommand("SELECT * FROM TABLE WHERE Condition", conn);
SqlDataAdapter custDA = new SqlDataAdapter();
custDA.SelectCommand = selectCMD;
custDA.Fill(dt);
Datagridview1.DataSource=dt;
Datagridview1.DataBind();
但问题是,在 SQL Server Management Studio 中执行相同的查询时,执行时间少于秒。同时在使用程序时,需要半分钟才能得到结果。使用调试器,我看到,程序“思考”很多时间的主行是数据适配器填充 DataTable 的时候。有什么建议可以减少时间吗?我的代码有什么问题?
【问题讨论】:
-
您的查询返回了多少行?
-
您的应用程序是否使用了与此问题无关的角色或可能需要大量时间的东西?
-
这是在请求数据之前不执行查询所花费的时间。我无法解释为什么它比 Management Studio 慢,但这就是为什么它在
Fill调用时很慢。如果这不是您花费时间的地方,则与 SQL 无关 -
我的应用程序没有使用任何角色。查询可能不返回行、一行或多行
-
@SoneshDabhi 谢谢,我会看看,但我没有使用存储过程或用户定义的函数。
标签: c# database dataadapter