我正在做一个大规模的插入/更新操作。
所以我正在使用SqlBulkCopy。
SqlConnection myConnection = new SqlConnection(myConnectionString);
try
{
myConnection.Open();
SqlBulkCopy myCommand = new SqlBulkCopy(myConnection);
myCommand.DestinationTableName = "myDestinationTableName";
//Below method has four overloads;
//of which I am interested in the two mentioned below.
myCommand.WriteToServer();
myCommand.Close();
}
finally
{
myConnection.Close();
}但我无意中发现了这两个版本的WriteToServer方法。
问:一个相对于另一个的利弊是什么?哪个更快?
发布于 2015-05-25 15:02:32
在默认情况下,两者都应该具有相似的性能,否则马匹。
但是,有一个不同之处,以WriteToServer为参数的DataTable将插入DataTable中的所有行,但是IDataReader副本以读取器中的下一个可用行开始(默认情况下这将设置为第一行)。
请记住,IDataReader提供了只读/前向机制,因此存在当前位置/行索引的概念,而对于DataTable则不存在这种情况。随着Read对IDataReader行的移动,索引将移到下一行。
发布于 2015-05-25 15:10:44
当您已经在应用程序中的某个地方拥有合适的DataTable时,DT重载是针对这些情况的。
IDataReader的重载反过来也适用于某些查询(无论是原始查询文本还是构造的命令,这都不重要)。在这种情况下,创建中间数据容器(如DT )是不必要的。因此,这种重载允许您直接从读取器获取数据。
假设您既没有DT,也没有IDataReader,那么第二个至少应该消耗更少的资源。
https://stackoverflow.com/questions/30441086
复制相似问题