본문 바로가기
728x90
반응형

MSSQL15

MSSQL] OPENQUERY 사용으로 실행속도 개선 사내 인프라 운영시, MSSQL 연결된 서버의 데이터를 연동하는 일이 많아서, 아래와 같이 데이터를 조회해오는 일이 많다. SELECT [컬럼명] FROM [연결된 서버별칭].[데이터 베이스명].[데이터베이스 소유자명].[테이블명] WHERE [조건절] ​ 하지만 위와 같이 사용하면, 해당 테이블을 FULL SCAN하게 된다. 속도 개선을 위해, 연결된 서버로 조건절을 전달하여 필요한 데이터만 가져올 수 있도록 OPENQUERY를 사용한다. 아래와 같이 OPENQUERY로 조회해오는 프로시저를 만들어서 사용하는 것이 편리하다. CREATE PROCEDURE [dbo].[procLinkedServer] ( @searchText VARCHAR(10) ) AS SET Nocount On; SET TRANSAC.. 2020. 10. 7.
MSSQL] 구버전 SSMS 에서 JSON 파싱 최신 SSMS에서는 OPENJSON 함수를 사용하여, JSON String의 key와 값 추출이 가능하다. OPENJSON을 제공하지 않는 구버전 SSMS는 아래 함수 만들어서 사용가능하다. create FUNCTION [dbo].[fnGetJsonValue](@key varchar(100), @data nvarchar(max)) RETURNS nvarchar(max) AS BEGIN DECLARE @keyJson varchar(105) = '"' + @key+ '":' DECLARE @keyIdx int = CHARINDEX(@keyJson, @data) IF @keyIdx = 0 RETURN null DECLARE @valueIdx int = @keyIdx + LEN(@keyJson) DECLARE .. 2020. 10. 6.
MSSQL] 프로시저, 뷰 문자열 검색 매번 프로시저, 뷰를 찾는 쿼리를 작성하는 번거로움을 없애기 위해, SearchProc 프로시저를 만들어 놓고 사용한다. EXEC SearchProc '찾는문자열', 'dbname' CREATE PROCEDURE [dbo].[SearchProc] @text nvarchar(250), @dbname nvarchar(64) = null AS SET NOCOUNT ON DECLARE @TABLE TABLE ( NID INT IDENTITY(1,1), NAME VARCHAR(100) ) DECLARE @결과 TABLE ( NID INT IDENTITY(1,1), DBNAME VARCHAR(100), NAME VARCHAR(100), XTYPE VARCHAR(100), TYPE VARCHAR(100), TEXT .. 2020. 10. 6.
728x90
반응형