通过存储过程将数据插入到多个表中

时间:2017-01-12 13:14:26

标签: sql sql-server tsql stored-procedures

我遇到导入任务的性能问题(用户需要将新数据导入系统)并且可能没什么帮助。

数据库中的数据如下所示:

Categories

列:

  • Id int primary key identity(1,1)
  • Code nvarchar(20) not null
  • RootId int not null
  • ParentId int not null

CategoryNames

列:

  • CategoryId int not null foreign key references Category (Id)
  • LanguageId int not null foreign key references Language (Id)
  • Name nvarchar(100)

目前它的工作方式如下:每行

  • 创建与数据库的连接
  • 使用data [i]
  • 调用存储过程
  • 关闭连接

我已经摆脱了每行数据的创建和关闭连接。但它还不够好。

目前任务需要大约36分钟才能插入~22000个类别。 存储过程如下所示:

procedure Category_Insert 
     (@code nvarchar(20),
      @root int,
      @parent int,
      @languageId int,
      @name nvarchar(100),
      @id int output)
as
     set nocount on

     insert into Categories (Code, RootId, ParentId) 
     values (@code, @root, @parent)

     select id = scope_identity()

     insert into CategoryNames (CategoryId, LanguageId, Name) 
     values (@id, @languageId, @name)

我有什么建议可以加快这项任务的表现吗?

我很想使用批量插入或类似的东西,但我如何通过批量插入实现存储过程的逻辑?

或者是其他任何加快速度的方法吗?

0 个答案:

没有答案