본문 바로가기
MSSQL

MSSQL] OPENQUERY 사용으로 실행속도 개선

by Fastlane 2020. 10. 7.
728x90
반응형

사내 인프라 운영시, MSSQL 연결된 서버의 데이터를 연동하는 일이 많아서, 아래와 같이 데이터를 조회해오는 일이 많다. 

 

SELECT [컬럼명] FROM [연결된 서버별칭].[데이터 베이스명].[데이터베이스 소유자명].[테이블명] WHERE [조건절]

하지만 위와 같이 사용하면, 해당 테이블을 FULL SCAN하게 된다. 

 

속도 개선을 위해, 연결된 서버로 조건절을 전달하여 필요한 데이터만 가져올 수 있도록 OPENQUERY를 사용한다.

아래와 같이 OPENQUERY로 조회해오는 프로시저를 만들어서 사용하는 것이 편리하다.

 

 

CREATE PROCEDURE [dbo].[procLinkedServer]              
(              
@searchText VARCHAR(10)                 
)              
AS   
SET Nocount On;  
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;   


declare @Query varchar(1000)
set @Query = '

SELECT
 *
FROM OPENQUERY([연결된 서버별칭],''

 Select 
  [컬럼명]
 From [데이터 베이스명].[데이터베이스 소유자명].[테이블명] WITH(NOLOCK)
 Where [컬럼명] = ''''' + @searchText + ''''' 
  ''
) AD'



EXEC (@Query)

 

728x90
반응형

댓글