PROCEDURE [dbo].sp_DataInput
(
@p1 int
,@p2 int
.
.
.
,@p100 int
)
as
Declare
@strTargetDate nvarchar(30)
, @strTableName nvarchar (30)
, @sql nvarchar(4000)
, @param nvarchar(4000)
, @ID bigint
, @ID2 nvarchar(16)
set @sql = ' ';
set @param = ' ';
BEGIN
begin
select top 1 @ID = [ID] from TB_MASTER_DATA
select top 1 @ID2 = [ID2] from TB_MASTER_DATA
select top 1 @strTargetDate = [Date] from TB_MASTER_DATA
end
SET @strTableName = 'TB_SUB_DATA_'+@strTargetDate;
BEGIN
SET @sql = 'INSERT INTO '+ @strTableName + 'VALUES(@p1,@p2,@p3 ..... @p100';
SET @param =' @p1 int
,@p2 int
.
.
.
,@p100 int';
execute sp_executesql @sql,@param
,@p1 = @1
,@p2 = @2
.
.
.
,@p100 = @100
END
END
위 프로시저에 대해서 설명하자면...
1~100개의 변수가 있습니다
C++에서 1~100개의 변수를 for문으로 약 1000번정도 반복하면서 넣는대요
TB_MASTER_DATA에서 가장 최신 ID, ID2, DATE를 가져와서 SUB 테이블 이름을 조합합니다 (테이블이름이 가변, ID 날짜별 가변생성)
그런 아래와같이 매칭해서 밀어넣어주고 있는데 이게 천번정도 반복하다보니 속도가 생각보다 많이 느리더라구요..
테이블에 락이 걸려서 그런건가요? 초당 한 50회? 정도밖에 수행하질 못하는것 같습니다
파일로 드랍 후 Bulk Insert를 사용해야하는건지..
위 프로시저는 알아보기 쉽게 좀 줄여서 쓴거구요 실제 테이블 정보를 이미지로 첨부합니다.
실제 Insert 되는 Sub Table의 정보입니다.
컬럼은 106개고 Binary Type도 존재합니다.
도움 좀 부탁드리겠습니다. 읽어주셔서 감사합니다
아참 프로그램과 DB서버는 기가비트 망으로 연결되어있습니다,n int