如何增加查询时间?

时间:2011-05-09 04:49:49

标签: sql-server-2008 c#-4.0

是否有可能使用C#.NET,Windows Forms增加程序中的查询执行时间?

在我的程序中,我正在循环中执行查询。在前两次迭代中,查询每次执行10秒。在第三次迭代中,查询完成大约需要40-50秒,现在我无法从该查询中提取数据,因为引发了超时异常并且执行流程转到catch块显示相应的错误消息。

是否有可能在Windows应用程序中使用C#.NET执行超过30秒的查询?

以下是我的代码:

try
{
    tab = "dbo.basic_sp_mst";
    error1 = "" + site + "." + orgname + "";
    ls = "" + site + "." + site + "." + tab + "";
    SqlDataAdapter da2 = new SqlDataAdapter("select * from " + ls + " where (last_updated_date between(getdate()-3) and (getdate()-1)) order by last_updated_date,bsp_item_cd", con);
    DataSet ds2 = new DataSet();
    da2.Fill(dt5);
    dt6 = dt5;

    SqlDataAdapter daa = new SqlDataAdapter("select a. bsp_item_cd ,a.bsp_mrp,a.last_updated_date,b.bsp_item_cd ,b.bsp_mrp,b.last_updated_date,c.name from basic_sp_mst a," + ls + " b,sys.servers c where  a.bsp_item_cd =  b.bsp_item_cd and a.bsp_mrp<> b.bsp_mrp and a.bsp_org_cd=" + s + " and c.name<>'001' and c.name='" + site + "'", con);......................(this is the main query) if this query is taking more than 30sec it is going to catch block.......

    DataSet dss = new DataSet();
    daa.Fill(dt7);
    dt8 = dt7;
}
catch (Exception ex)
{
    msg2 = " query time out error at store id:" + error1 + "";
    dataGridView8.Rows.Add(msg2);
}

1 个答案:

答案 0 :(得分:0)

只需增加SqlDataAdapter的CommandTimeout属性。

// Set timeout to 2 minutes
daa.SelectCommand.CommandTimeout=120;

此命令在new SqlDataAdapter定义之后和调用Fill之前。

另外,检查表是否在Where命令的Select部分的列上有索引,以尝试缩短查询时间。

您也可以use the MS SQL Server Profiler获得有关可以提高效果的索引的建议。