大sql超时选择

时间:2015-10-29 10:22:59

标签: c# sql performance select

避免在非常大的sql select语句上超时的最佳方法是什么?

List<int> klienter = FundneKlienter.Keys.ToList();

if (klienter.Count > 0)
{
    Dictionary<int, String> klientNavne = new Dictionary<int, string>(klienter.Count);
    String sql = "SELECT [0],[1] FROM [Tabel] WHERE [0] IN " + klienter.ToSqlList();

    using (SqlCommand cmd = new SqlCommand(sql, _connection))
    using (SqlDataReader sr = cmd.ExecuteReader())
        if (sr.HasRows)
            while (sr.Read())
                klientNavne.Add(int.Parse(sr["0"].ToString()), sr["1"].ToString());

这&#34; klinter&#34;列表可以包含所有长度为4-5个长度的700万ID ID。

优化此查询的最佳方法是什么?

我在40.000+之后得到超时?我是大型SQL语句的新手。

告诉我你是否需要更多代码来帮助我。

2 个答案:

答案 0 :(得分:1)

避免超时问题的一种方法是添加:

SqlCommand.CommandTimeout = 0;

MSDN说:

  

值为0表示没有限制(尝试执行命令将会   无限期地等待。)

答案 1 :(得分:1)

Rahul上面的答案是一个很好的答案......你也可以选择你的查询 - 考虑索引等...