我有一个大表,其中包含 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 分钟)
超时是不是因为表太大了?
这是怎么回事,我该如何解决这个问题?