database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6834 게시물 읽기
No. 6834
기존 자료 검색 후 중복제거후 insert 하는 방법을 알고 싶습니다.
작성자
꽃씨하나(wtb0307)
작성일
2014-07-21 13:00
조회수
9,101

 

제가 하고자 하는 것은 아래와 같습니다.

스케쥴러를 통해 외부에서 데이터를 일정한 시간에 가져옵니다.

 

가령 11시에서 

id      name    nick

1       이름1     별명1

 

2       이름2     별명 2

 

그 후 11시 30분에

id    name   nick

1     이름1   별명1

4    이름4   별명4

와 같이 이루어졌을 경우

id  1  name 이름1  nick 별명1 인 사람이 중복으로 등록이 됩니다.

이럴경우 중복제거를 하고 싶은데요.

이것을 db 단에서  insert 후 select 해서 중복제거를 하는 로직이 맞는것인지..

아니면 select 한 후 값을 가져와서 어플(asp 등)  하나하나 비교를 해야할까요?

 

가능하시면 샘플 쿼리 부탁드리겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 글에 대한 댓글이 총 3건 있습니다.
CREATE TABLE at11 ( 
  id INT
, name NVARCHAR(50)
, nick NVARCHAR(50)
)
;
INSERT INTO at11( id, name, nick )
SELECT 1, '이름1', '별명1' UNION ALL
SELECT 2, '이름2', '별명2'
;
SELECT * FROM at11
;
WITH at1130 ( id, name, nick )
AS
(
SELECT 1, '이름1', '별명1' UNION ALL 
SELECT 4, '이름4', '별명4'
)
MERGE at11
USING at1130
ON at11.id = at1130.id
WHEN NOT MATCHED BY TARGET THEN
INSERT ( id, name, nick )
VALUES( at1130.id, at1130.name, at1130.nick )
;
SELECT * FROM at11
;
DROP TABLE at11
;
우욱님이 2014-07-21 13:13에 작성한 댓글입니다. Edit

역쉬.. 빠른 답변.. 우욱님.. 감사합니다.

제가 우려하는 것은 데이터가 한두건이 아닌 몇만건이 쌓여있다고 가정을 하고

또 insert 문도 몇만건을 inset 할 수 있다고 가정하에..

 

우욱님 답변처럼 select > 중복제거 > insert  하는 도중

 

사용자가 웹페이지를 접속했을 때 데이터가 늦게 반영되거나 

또는 데이터 손실이 일어날 경우는 없을까요?

 

 

꽃씨하나(wtb0307)님이 2014-07-21 13:20에 작성한 댓글입니다.

그렇기에 더더욱 merge문으로 처리하는 것이 빛을 발합니다.

1개의 merge 문으로 처리하기 때문에 별도의 transaction을 관리할 필요도 없고요,

몇천만건을 넘기는 것도 아니고 그까이 몇 만건 가지고 벌벌거리면 전문가를 통해서 튜닝이 심각하게 필요하다고 보셔도 무방하겠습니다.
(가장 기초적으로 제가 만든 예제에서 at11 테이블의 id에 index는 성능때문이라면 꼭 있어야 합니다. unique index면 완전 땡큐땡큐)

참조하실만한 문서: MERGE문 성능 최적화
 

 

참고로 빠른~ 답변은 걍 우연히 점심 먹고 와서 봤더니 질문이 있기에.. -_-;;

 

 

우욱님이 2014-07-21 13:54에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6838fn_varbintohexstr로 암호화하기 [6]
선이
2014-08-01
9887
6837mdb 파일 연결 관련하여 질문드립니다. [1]
쿠쿠쿠
2014-08-01
8736
6836두테이블에서 한테이블에 없는값 가져오기 [2]
둥둥이
2014-07-28
7031
6834기존 자료 검색 후 중복제거후 insert 하는 방법을 알고 싶습니다. [3]
꽃씨하나
2014-07-21
9101
6833간단한 쿼리 질문드립니다. [1]
질문이요
2014-07-17
7172
6832자식 로우 찾기 2 [1]
우세연
2014-07-13
7525
6831sql server 링크드 서버를 이용한 oracle 함수 사용 [1]
핸시기
2014-07-09
8583
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다