문의사항이 있어서 글을 남깁니다.

프로시저를 하나 만들어서 사용중입니다. 프로시저 내용은 다음과 같습니다.


CREATE PROCEDURE [dbo].[SEND_SMS]
    @SMS_메세지  VARCHAR(2000),
    @수신번호  VARCHAR(20),
    @발송번호갯수 INT,
    @발송번호목록 TEXT

AS
BEGIN

000. 발송번호 목록은 아래와 같이 들어옵니다.
박정아^010-1234-5678|최승현^010-2345-6789|김수영^010-3456-7890|이승우^010-5555-2222|문지현^010-4444-8888|

001. 임시테이블 만들기 ( 실제테이블과 동일하게 )
CREATE TABLE #SMSSEND

002. 발송번호 / 20을 한 갯수을 구합니다. ( 한 레코드당 최대 20개까지 입력가능 )
SET @SMS_CNT_20 = CEILING(CONVERT(FLOAT,@발송번호갯수) / 20)
SET @SMS_COMMIT_CNT          = 0


003. 루프를 돌면서 발송번호 목록을 20개씩 쪼갭니다.
WHILE @SMS_COMMIT_CNT < @SMS_CNT_20
BEGIN


004. 000항목을 | 기준대로 잘라서 보관을합니다.
SET @DEST_TEMP =@DEST_TEMP +  SUBSTRING(@DEST_INFO_TEMP,1,PATINDEX('%|%', @DEST_INFO_TEMP))                   
          -- 받는이 전화번호를 1개씩 나누어서 변수에 담는다  
SET @DEST_SEND_CNT = @DEST_SEND_CNT + 1                             
         -- 1개씩 카운트를 증가하여 20개에 도달할 경우 SMS 테이블에 저장한다  
SET @DEST_INFO_TEMP = SUBSTRING(@DEST_INFO_TEMP,PATINDEX('%|%', @DEST_INFO_TEMP) + 1,DATALENGTH(@DEST_INFO_TEMP) - PATINDEX('%|%', @DEST_INFO_TEMP))     -- 변수에 담은 전화번호는 해당 변수에서 제거한다

 004. 항목이 20개에 도달할 경우 SMS를 보냅니다.
 IF (@DEST_SEND_CNT % 20 = 0 )   
 BEGIN
  
  INSERT TABLE #SMSSEND

  005. 전송후 초기화 합니다. 
  SET @DEST_SEND_CNT = 0                              --발송한 SMS 카운트를 초기화 한다
  SET @SMS_COMMIT_CNT = @SMS_COMMIT_CNT + 1                         --( 총발송건수 / 20 ) - 1건 차감한다
  SET @DEST_TEMP = ''                               --보낸 SMS 받는이 전화번호데이터는 초기화한다

 END


END

006. 모든 루프를 돌아 입력작업이 마무리 되면 실제테이블에 일괄 입력을합니다.

 INSERT INTO [SMSSEND]
        SELECT FROM #SMSSEND


END

----------------------------------------------------------------------------------------------------------------
위의 내용대로 구성이 되어 있는데요
이프로시저를 실행하면

1. @발송번호갯수가 1만명기준이면(1명당 20바이트) 45~50초 정도 소요
2. @발송번호갯수가 2만명기준이면(1명당 20바이트) 1분 45~50초 정도 소요
3. @발송번호갯수가 3만명기준이면(1명당 20바이트) 7분~8분 정도 소요

가됩니다. 시간이 너무 걸리는작업이라 이걸 시간을 단축하게끔 수정작업을 하고 싶습니다.
조언을 구합니다. 도움을 부탁드리겠습니다.

감사합니다.



































No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36188
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 18743
9383 윈도우10 SQL2000 설치 안되나요? [2] 뉴곰이 2016.06.13 7419
9382 MS-SQL 복제와 미러링에대해 조언 부탁드립니다. [1] 짭거북 2016.06.13 3520
9381 안녕하세요.. 제발 도와주세요 ㅜㅜ (sql connectino 에러) [1] mj124356 2016.06.13 5997
9380 안녕하십니까 선배님들 질문하나 드립니다 (트랜잭션잠금에러) [2] 플러미 2016.06.13 3236
9379 중복 데이터 표시 문의 [2] 다은빈아빠 2016.06.09 4089
9378 합계(SUM) 질문 입니다 ㅠㅠ [1] 떠벙이 2016.06.09 3059
» SQL 프로시저 수정요청드립니다 [11] 미련곰퉁아 2016.06.09 3457
9376 재귀 쿼리 질문입니다. 유리의성 2016.06.08 2853
9375 master, tempdb 접근제한 진실세상 2016.06.08 2277
9374 설치 문의 ㅜㅜmanagement 가설치가 안되요 . [2] 초보sql하 2016.06.08 2423
9373 쿼리 로그 질문입니다. 유리의성 2016.06.08 2719
9372 LDF 파일 용량에 관한 질문입니다. [4] 정진범 2016.06.07 3130
9371 SQL 관련 질문입니다. [2] 다복이 2016.06.07 2438
9370 cte 안에서 ROW_NUMBER()? [3] 밥먹는푸우 2016.06.05 2805
9369 오라클 SQL 질문입니다.!! [2] 에휴 2016.06.05 3631
9368 다른 테이블의 각각의 결과값을 한번에 보고 싶어요ㅠㅠㅠ [2] 시랑 2016.06.05 2532
9367 sa사용자 암호 자동변경 문제점좀 도와주세요 [1] 뉴곰이 2016.06.04 2971
9366 mssql2014 시퀀스 질문드립니다. [1] 식뽕 2016.06.03 2682
9365 db 백업 방법 문의 [1] WildWindK 2016.06.03 3064
9364 데드락인데, 정보가 별로 남지 않는데, 이 경우 확인 할 방법이 없을까요? [1] 군고구마 2016.06.03 3075





XE Login