我有一个使用 ODBCDataReader 从数据库中读取数据的应用程序。该ODBCDataReader rdr = com.ExecuteReader()
行执行得非常快,但是 rdr.Read() 的第一次迭代需要非常长的时间(15 秒或更长时间)来处理。每次连续迭代都快得多(不到一秒。)
返回的行数相对较少(<100),但每行大约有 170 列。
我很困惑为什么这只发生在第一次通过 .Read() 命令时。基本上,我将数据从一个数据库移植到另一个数据库,并为数据读取器返回的每条记录构建一个插入查询。当数据读取器第一次读取时,是否在幕后做了一些事情,有没有办法解决这个问题?此导入应该只需要一两分钟,并且由于这个问题需要几个小时!相关代码如下,但可能无助于解决此问题:
OdbcDataReader odbcRdr = odbcCom.ExecuteReader();
while (odbcRdr.Read())
{
//Process the record and insert into the new database.
}
正如我所说,一旦它通过了 odbcRdr.Read() 的第一次迭代,代码就会在不到一秒的时间内飞行并插入所有记录。