안녕하세요.


100만건의 데이터를 하나씩 가져와 1500건의 자료와 하나씩 비교하며 걸러내는..

중첩된 WHILE문으로 데이터 비교 후 필요한 레코드의 SEQ(고유번호)를 구해서 

별도의 테이블에 등록해 주는 프로시저를 만들었습니다.


100만건 정도의 데이터를 분류하기 위해 만든 것인데요

처음엔 커서의 중첩 사용으로 WHILE문을 돌리는 것으로 처리했습니다.


그런데 속도가 너무 느린 것이었습니다.

인터넷을 찾아보니 커서는 속도의 문제로 권장하지 않으며 테이블 변수를 만들어 해당 데이터를 넣어준 뒤

WHILE문으로 레코드를 하나씩 가져와 처리하라는 내용을 보고 테이블 변수로 바꾸었습니다.


그런데 테이블 변수를 사용해서 돌려도 속도가 크게 개선되는 것 같진 않았습니다.

대충 12시간 넘게 걸리던 작업이 6~7시간 정도로 줄긴 했으나 ...

100만건 데이터를 WHILE문으로 하나씩 가져와서 약 1500개 정도 되는 데이터를 또 다시 WHILE문으로 비교하면서

데이터를 걸러내는 작업 치고는 너무 오랜 시간이 걸리는 것 같다는 생각 이었습니다.


그래서 인터넷을 다시 찾아 봤습니다.

커서에서 선언부에 커서의 옵션으로 FAST_READONLY 또는 STATIC 등의 옵션을 주면

DEFAULT값인 Dynamic보다 빠르다는 내용을 보고

처음엔 FAST_READONLY 적용을 하였으나 커서가 이미 선언 되었다는 에러 메시지가 나와서

STATIC으로 변경했더니 빠르게 수행 되더군요..


작업 시간이 약 1시간 정도로 매우 빨라 졌습니다.


인터넷에 뒤져보면 커서 사용을 자제하고 테이블 변수를 사용하거나 차선책으로 임시 테이블을 쓰라는 내용이 있던데

지금 이렇게 작업을 해놓고 보니 커서에서 옵션만 선언부에 잘 적용 시키면 엄청 빠른 결과를 가져올 수 있었습니다.

제가 테이블 변수를 잘못 사용한 것일까요? 아니면 커서를 사용하는 것이 맞는 것일까요?


왜 사람들은 커서의 사용이 퍼포먼스에 좋지 못하니 사용하지 말라고 할까요?

몇마디 조언 부탁드립니다.


P.S.

제가 만든 프로시저의 내용이나 예상실행계획을 보시고 싶다면 올려드릴 수 있습니다.

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 13211
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 8162
7198 구글 위경도 좌표 테이블에서 거리를 계산하는 MySql쿼리=> MSSql 변환 문의 [3] 자유인s 2013.09.27 19361
7197 connection error [1] 이유진_301818 2013.09.27 3507
» 중첩된 WHILE문 수행 프로시저에서 커서와 테이블 변수 속도 관련 문의 [7] Larry 2013.09.26 11338
7195 작업모니터에서.... 비홍 2013.09.26 4326
7194 시퀀스와 기본키, 유니크 관련문의입니다. [15] 하하하하하 2013.09.26 5345
7193 조인과 서브쿼리 관련 질문입니다. [4] 흑흑 2013.09.26 6232
7192 MSSQL '문자열이나 이진 데이터는 잘립니다.' 오류 문의 [4] rusl 2013.09.26 42709
7191 MSSQL 모니터링 솔루션 추천 바랍니다. [3] 수노 2013.09.26 5375
7190 기간별 검색 문의 [1] 아기탱구 2013.09.26 3882
7189 데이타 추출 [2] 냥냥 2013.09.25 3705
7188 계정 관련 질문 하나 올립니다. [2] ViewPple 2013.09.25 3099
7187 테이블 변수를 동적 쿼리에서 사용할 때 질문입니다. (질문 수정본) [1] Larry 2013.09.25 16542
7186 mysql 몇가지 질문... 이런마마 2013.09.25 3652
7185 PK 형 변환 질문 [4] 군고구마 2013.09.25 3892
7184 sp_executesql에 대해 문의좀 드리겠습니다. [3] 호야~♥ 2013.09.25 3834
7183 선배님들 트랜잭션에 관해서 궁금한점이 있습니다 [5] alima 2013.09.25 3805
7182 group by를 안쓰도록 변경할 수 있나요? [6] 디베이 2013.09.25 4231
7181 쿼리 질문드립니다. [4] 나는짱이야 2013.09.24 3720
7180 게시판에서 같은 아이디의 글수를 제한하고 싶습니다. [4] 카루카루 2013.09.24 4039
7179 SSMS에서 Windows 인증으로 로그인 시 지연되는 문제 [1] 이티 2013.09.24 4418





XE Login