본문 바로가기

openquery2

[MSSQL] OPENQUERY 대용량 DML 작업 시 문제점 OPENQUERY를 이용하여 POSTGRESQL에 DELETE 및 INSERT 작업을 진행하였다. 적게는 수천건부터 많게는 수백만건 작업을 해아하는데 어째서인지 만건만 넘어가도 서버가 뻗어버렸다. 그 원인은 바로 OPENQUERY의 메커니즘에 있었다. 예를 들어 DELETE FROM MEMBER 가 있다고 가정하면 그냥 POSTGRESQL에서 실행 시 MEMBER의 ROW 수 만큼 삭제되는데 실행계획을 보면 1 EXCUTE된다. 하지만 OPENQUERY 실행 시 ROW 수 = EXCUTE 수가 된다. 즉 하나를 삭제할 때 마다 모든 테이블을 읽어온다는 뜻이다. INSERT도 마찬가지로 INSERT 작업 후 SELECT문을 실행시켜 모든 데이터를 한번 얻어온다고 한다. 직접 확인은 못했지만 아래 링크를 확.. 2020. 4. 22.
[MSSQL] OPENQUERY로 다른 DB 사용하기 MSSQL에서는 OPENQUERY를 사용하여 다른 DB의 접근과 사용이 가능하다. 즉, 다른 DB 서버에서 MSSQL 뿐만 아니라 MySQL, Oracle 등 원하는 DB를 제어할 수 있다. - OPENQUERY의 기본적인 문법 OPENQUERY ([서버이름], 'SELECT [컬럼명] FROM [테이블명]'); ex) OPENQUERY(SH_ORACLE, 'SELECT ID, PW FROM TBL_MEMBER) ​ - OPENQUERY에 오라클 MEMBER 테이블에서 가져온 데이터가 담기게 된다. - OPENQUERY 데이터 조회 SELECT [컬럼명] FROM OPENQUERY ([서버이름], 'SELECT [컬럼명] FROM [테이블명]'); ex) SELECT ID, PW FROM OPENQUER.. 2020. 4. 10.