데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
안녕하세요.
초보 웹개발자인데요..
한 5000만건 정도 되는 테이블에 같은 값이 있는지 확인하여 없으면 Insert를 할려고 하는데요..
IF NOT EXISTS( select idx from aa where 날짜 = '날짜' and 이름 = '이름' and 생년월일 = '생년월일')
이렇게 쿼리를 짜면 데이타가 입력 되는데 속도가 괜찮을까요??
고수님들의 답변 부탁드립니다.
Comment 4
-
Hisory
2014.05.16 10:55
-
아더왕
2014.05.16 15:37
네 로그성 테이블이 맞구요.. 데이타는 월단위로 백업테이블로 이동합니다.
인덱스는 현재 IDX란 자동증가 필드에 주어져 있구요..
이게 중복데이터가 들어가지 않게 하기 위해서 시간을 비교해야 되구요..
답변 감사드립니다.
-
항해자™
2014.05.17 14:45
"이름, 생일, 날짜"로 유니크 인덱스가 있을테니, 아래와 같은 쿼리로 하셔도 됩니다,,,
insert into dbo.테이블
select a.이름, a.생일, a.날짜
from ( select @iName as [이름], @iBirth as [생일], @iWorkDate as [날짜] ) as a
left join dbo.테이블 as b
on b.이름 = a.이름
and b.생일 = a.생일
and b.날짜 = a.날짜
where b.이름 is null
-
아더왕
2014.05.26 14:26
다른일로 답변이 달린지 몰랐네요..
아 저런 방법도 있군요..
속도가 어떤지 함 테스트 해봐야겟네요..
답변 진심으로 감사합니다..
즐거운 하루되세요.!!
혹시 로그성 테이블인가여?
로그성이면 일 혹은 월단위로 데이터 이동처리를 해주시는것도 방법일듯 합니다.
문의하신 내용은 데이터 건수도 영향을 무시할수는 없겠지만 데이터의 분포도 및 인덱스에 따라 성능이 결정될꺼 같네여