연결된 서버를 통해 연결된 두 개의 데이터베이스 서버가 있습니다. 둘 다 SQL Server 2008R2 데이터베이스이며 연결된 서버 연결은 현재 로그인의 보안 컨텍스트를 사용하여 일반 "SQL Server"링크를 통해 이루어집니다. 연결된 서버는 모두 동일한 데이터 센터에 있으므로 연결에 문제가 없어야합니다.
다음 쿼리를 사용하여 identifier
원격으로 사용할 수 있지만 로컬에서는 사용할 수없는 열 값을 확인 합니다.
SELECT
identifier
FROM LinkedServer.RemoteDb.schema.[TableName]
EXCEPT
SELECT DISTINCT
identifier
FROM LocalDb.schema.[TableName]
두 테이블 모두 열에 비 클러스터형 인덱스가 identifier
있습니다. 로컬에는 약 260 만 개의 행이 있으며 원격으로는 54 개입니다. 그러나 쿼리 계획을 볼 때 실행 시간의 70 %가 "원격 쿼리 실행"에 전념합니다. 또한 전체 쿼리 계획을 연구 할 때 예상 로컬 행 수는 1
대신 2695380
(다음에 오는 쿼리 만 선택할 때 예상 행 수 ) 대신에 사용됩니다 EXCEPT
.
이 쿼리를 실행할 때 시간이 오래 걸립니다.
궁금합니다 : 왜 이런가요? 추정이 "정확한"방법입니까, 아니면 연결된 서버의 원격 쿼리가 실제로 그렇게 비쌉니까?