webrequest c#million记录

时间:2013-10-10 14:04:57

标签: c# sql-server

我需要一些建议来处理我正在做的事情,这需要花费很长时间才能运行。

  1. 我在数据库中有大约100000条记录,其中有一个日期列。这需要更新。
  2. 这是通过调用每条记录的URL并获取日期并进行更新来完成的。
  3. 现在,我编写了一次选择1000条记录的C#代码。
  4. 代码:

    WebRequest wr = WebRequest.Create(inputURL);
    HttpWebResponse response = (HttpWebResponse)wr.GetResponse();
    
    // Get the stream containing content returned by the server.
    Stream dataStream = response.GetResponseStream();
    
    // Read the content. 
    StreamReader reader = new StreamReader(dataStream);
    
    string responseString = reader.ReadToEnd();
    

    响应是json的形式,所以使用Jsonserializer我得到了日期。 然后我一次更新一条记录。

    现在,这需要很长时间。我怎样才能提高这个性能?

2 个答案:

答案 0 :(得分:0)

您可以使用SSMS或其他方法执行sql吗?你没有指定更新日期的规则,但是如果你有一个真正简单的情况,比如说每个日期增加10天,你就可以用一行代码(毫秒)来执行,即

update mytable set mydate = dateadd(day, 10, mydate) ...voila.

即使您有更复杂的更新规则,您最好通过sql执行此操作,而不是通过webrequest一次创建一条记录...

更新日期的规则是什么?

答案 1 :(得分:-1)

您可以同时打开许多服务器的URL。一种简单的方法是使用.NET中的TPL(任务并行库)调用此方法(V4及更高版本,我认为,可能是3.5)

List<string> Urls = GetMyList(); 
System.Threading.Tasks.Parallel.ForEach( Urls, u=>Doit(u) );

例如,请在此处查看答案:Parallel Extensions

您可以限制同时处于活动状态的线程数。