数据表循环性能

本文关键字:性能 循环性 循环 数据表 | 更新日期: 2023-09-27 18:01:55

我有一个关于c#中循环数据表的问题

我有一个数据表有大约20000行和60列

我想写一个SQL查询插入所有的数据在DataTable到数据库

我正在使用My Sql

这是我的SQL语法:
"Insert into a values (...), (...), (...), ..." 

"(…)"是一行中的所有数据

这是c#代码:

DataTable myDataTable; // myDataTable has 20.000 rows and 60 columns
string mySql = "insert into a values "
for(int iRow = 0; iRow < myDataTable.Rows.Count; iRow++)
{
     mySql += "(";
     for(int iColumn = 0; iColumn < myDataTable.Columns.Count; iColumn++)
     {
          string value = myDataTable.Rows[iRow][iColumn].ToString()
          string parameter = "@" + iRows.ToString() + iColumns.ToString();
          // here is some code for add "parameter" and "value" to MySqlCommand
          mySql += ","
     }
     // remove "," at the end of string mySql
     mySql  = mySql.SubString(0, mySql.Length - 1);
     mySql += "),"
}
// remove "," at the end of string mySql
// after that, I will execute mySql command to insert data into database here

当我运行这段代码时,要花很多时间来完成

我试着从"string"改为"StringBuilder",但它只是快了一点。

如何使代码运行得更快?

感谢大家的支持

数据表循环性能

我在评论中询问了一些时间信息,但是我注意到这行代码:

mySql  = mySql.SubString(0, mySql.Length - 1);

我建议将其从循环中删除,并稍微聪明一点,只在需要时添加逗号。

例如,在内部循环中,在mySql变量的每个参数之前而不是之后添加逗号,除了iColumn == 0。这样可以避免不必要的逗号每次出现在字符串的末尾。