1

我有一个大表,其中包含 MySQL 中大约 1 亿条记录。我想从中读取所有记录并在我的 C#/.Net 程序中处理它们,所以我写了一些这样的代码:

string sql = "SELECT * FROM the_table";
MySqlCommand cmd = new MySqlCommand(sql, conn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
//...
}

但是运行3分钟后,出现超时问题。 这是错误输出:

如果我将 SQL 语句更改为使用“limit”:

string sql = "SELECT * FROM the_table limit 60000000" //60 million

然后它工作正常。(循环while (rdr.Read())大约需要 3.8 分钟)

超时是不是因为表太大了?

这是怎么回事,我该如何解决这个问题?

4

2 回答 2

1

OK,我终于定位问题了!这是因为我使用了 MySQL 开发的ADO.NET Driver for MySQL (Connector/Net) 。并且可能存在一些错误。然后我改用dotConnect,问题就消失了。感谢所有帮助。

于 2011-12-31T03:50:47.410 回答
0

我已将命令超时设置为更高的值,它解决了这个问题。

 MySqlCommand mySqlCommand = new MySqlCommand(sql_cmd);
 mySqlCommand.Connection = _connection;
 mySqlCommand.CommandTimeout = 3600;

希望这可以帮助

于 2018-01-05T06:18:53.873 回答