
원격지 서버의 테이블에 대한 갱신 작업을 위해서 다음과 같이 Linked Server의 테이블을 JOIN 하여 UPDATE 하였습니다. SET XACT_ABORT ON; DECLARE @ano VARCHAR(30) = 'S201910250010' BEGIN DISTRIBUTED TRAN UPDATE Trgt SET AcptYn = 'N', AcptEmpCode = '', AcptDeptCode = '', AcptDateTime = NULL FROM RemoteServer.RemoteDB.dbo.FIAccSlipDisappMaster AS Trgt JOIN RemoteServer.RemoteDB.dbo.FIAccSlipAggreationNo AS A ON a.SlipNo = Trgt.SlipNo AND A..
아시는 바와 같이 임시 테이블은 #(로컬) 및 ##(전역)이 prefix로 붙은 테이블 입니다. 그리고 테이블변수는 TABLE 타입으로 DECLARE된 로컬변수 입니다. 둘 간에 여러가지 차이점이 있지만 여기서는 성능적인 이슈만 언급 하겠습니다. 테이블변수의 문제는 SQL서버가 통계정보를 생성하지 않기 때문에 적절한 실행계획 수립이 안될 수 있다는 점 입니다. 아래는 테이블변수를 사용한 특정 SP의 실행계획 입니다 (처리속도는 14초). NL JOIN 으로 처리되어 과도한 Execute, Rows가 나왔습니다. SQL 서버가 NL을 선택한 것은 예상 행수가 모두 1 이기 때문 입니다. 예상 행수가 1:1 이기 때문에 NL로 처리해도 아무 문제가 없다고 판단이 되었습니다. 실제 테이블변수의 행은 1067 ..
- Total
- 380,560
- Today
- 71
- Yesterday
- 134
- windows 7
- IE 9.0
- 아이폰 4G
- sql서버
- 예상 행 수
- OpenQuery
- node.js
- MSSQL
- Stroke it
- java
- 마우스
- Linked Server
- SSMS
- c#
- SQL서버 2008
- 델파이
- 삭제된 파일 복구
- Delphi
- Mac OS X Snow Leopard
- 태그를 입력해 주세요.
- 프로젝트
- Windows Mobile Device Center
- NHN
- php
- Oracle
- 연결된 서버
- javascript
- 실행계획
- CD버너
- ERP