0

对于我正在做的一些需要“很长时间”才能完成的事情,我需要一些建议。

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

代码:

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 我得到了日期。然后我一次更新一条记录。

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

4

2 回答 2

0

您可以使用 SSMS 或其他方法执行 sql 吗?您尚未指定更新日期的规则,但如果您有一个真正简单的情况,例如在每个日期添加 10 天,您可以在几毫秒内用一行代码执行它,即

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

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

更新日期的规则是什么?

于 2013-10-10T14:36:45.690 回答
-1

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

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

例如,看这里的答案:Parallel Extensions

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

于 2013-10-10T14:26:30.780 回答