C# SQL Server 2022 插入太慢

问题描述 投票:0回答:1

我创建了一个简单的表,插入了一千行数据,结果只插入了1000行,用了10秒。这是正常的插入速度吗?它似乎异常缓慢。这个问题的原因可能是什么?

创建表

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[DB](
    [CODE] [varchar](20) NOT NULL,
    [DATE] [datetime2](7) NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[DB] ADD  CONSTRAINT [DF_DB_DATE]  DEFAULT (getdate()) FOR [DATE]
GO

插入数据

private void button1_Click(object sender, EventArgs e)
{
  for (int i = 1000; i < 2000; i++)
  {
    string query = $"INSERT INTO dbo.DB(CODE) VALUES('CHOCO{i}')";
    SqlExecuteNonQuery(query);
  }
}
private bool SqlExecuteNonQuery(string query)
{
  try
  {
    if (conn.State == ConnectionState.Closed)
      conn.Open();
    using (SqlCommand cmd = new SqlCommand(query, conn))
    {
      cmd.ExecuteNonQuery();
    }
  }
  catch (Exception ex)
  {
    return false;
  }
  finally
  {
    if (conn.State == ConnectionState.Open)
      conn.Close();
  }
  return true;
}
c# sql sql-server insert sql-insert
1个回答
0
投票

一行一行插入,慢是正常的。最好将数据传递给 SQL Server 存储过程,如 XML、JSON 或类似 CSV 的格式。然后解析这些数据并将其放入临时表,如果需要执行一些验证然后立即插入数据:

INSERT INTO table
SELECT *
FROM #table
© www.soinside.com 2019 - 2024. All rights reserved.