본문 바로가기
반응형

IT/MSSQL170

[MSSQL] SELECT 쿼리 복사 후 자동 정렬(SSMS 개행문자 옵션 설정) MSSQL툴인 SSMS에서 SELECT 쿼리를 진행하면 아래와 같이 표 형태로 쿼리가 표시 된다. 이 쿼리를 그대로 복사해서 새 쿼리창에 붙여 넣게 되면 일직선으로 일게 쭉 나열되게 된다. 이렇게 되면 가독성이 안 좋기 때문에 SELECT 쿼리 복사 후 자동 정렬이 될수 있도록 옵션에서 개행문자 설정을 진행해 주는 것이 좋다. SSMS 개행문자 옵션 설정 SSMS상단에 도구-옵션 클릭 쿼리결과-SQL SERVER-표 형태로 결과표시로 이동하여 "복사 또는 저장 시 CR/LF 보존(E)를 체크 후 확인을 누른다" 이 후 SSMS 재시작을 한 다음 동일하게 쿼리를 복사해서 붙여 넣으면 일직선으로 보이던 쿼리들이 원래 작성되었던 형태로 나오는 것을 볼 수 있다. 2023. 8. 13.
[MSSQL] 프로시저(SP) 생성시간 및 수정시간 확인방법 프로시저(SP)가 언제 생성되었고 생성 된 후 수정일 일어났을 경우 그 시간이 확인하는 쿼리입니다. [쿼리문] 쿼리문은 아래와 같습니다. all_objects 의 객체를 활용하여 SP 생성시간과 수정시간을 확인할 수 있습니다. 그리고 현재 위치한 데이터베이스 객체에 종속됩니다. use [디비명] go select * from sys.all_objects where is_ms_shipped = 0 --시스템객체는 제외 and type = 'P' --프로시저만 조회 and name='SP명' --SP이름 이상으로 프로시저(SP) 생성시간 및 수정시간 확인하는 방법에 대해서 알아보았습니다. 2023. 8. 13.
[MSSQL]프로파일러 쿼리 사용법 예시 SQL Server Profiler 를 사용하여 프로시저를 실행 했을 경우 프로파일러에서 설정 값에 따라 쿼리가 어떻게 들어오는지 확인해보자. 사용할 프로시저 간단히 @no 값을 입력받아 결과를 보여주는 쿼리이다. 1번 프로시저 P_test001_1를 실행하면 test001 테이블의 조건에 맞는 결과를 보여주고 5초를 기다린 후 2번 프로시저 P_test001_2를 실행하여 5초를 기다린 후 test001 테이블의 조건에 맞는 결과를 보여준다. --1번 : P_test001_1 ALTER proc [dbo].[P_test001_1] @no int AS select * from test001 as P_test001_1 where no=@no waitfor delay '00:00:05' exec P_test.. 2023. 4. 15.
[MSSQL]실행계획을 2가지 방식으로 가져가게 하기위한 방법/분기처리 입력되는 값에 따라 실행계획을 2가지 방식으로 가져가게 하기위한 방법을 설명한다. 예를들면 사원번호를 꼭 입력하지 않아도 되는 상황등이 있다. 사전 구성 스크립트 use INDEX_TEST go --drop table TB_OR SELECT ROW_NUMBER() OVER (ORDER BY a.number) AS userid , NEWID() AS txt , DATEADD(dd,a.number,'2020-01-01') AS date INTO TB_OR FROM master..spt_values a, master..spt_values b WHERE a.type = 'P' AND b.type = 'P' AND a.number BETWEEN 1 AND 1000 AND b.number BETWEEN 1 AND .. 2023. 4. 15.
[MSSQL] MDF, LDF 데이터 파일 물리적 위치변경 디스크의 용량 부족이라던지 마이그레이션 등의 이유로 MDF, LDF 파일의 물리적인 위치를 변경해야 하는 경우가 생긴다. 아래에서 파일 위치를 변경하는 방법에 대해서 간단히 알아보자. *주의사항 해당 작업은 위치를 변경하려는 디비를 오프라인해야하니 운영시간에는 작업금지. 1.데이터 파일 복사 원본 파일을 변경하고자 하는 위치로 복사한다. 여기서는 D드라이브에 있는 MDF,LDF 파일을 D드라이브로 복사한다. 원본위치 : 'D:\data\TESTDB\TESTDB.mdf','D:\data\TESTDB\TESTDB_log.ldf' 변경위치 : 'C:\data\TESTDB\TESTDB.mdf','C:\data\TESTDB\TESTDB_log.ldf' 2.디비 분리 이동을 위해 디비를 분리시킨다. 분리를 진행하면.. 2023. 4. 15.
[MSSQL] MAXRECURSION 힌트(무한 루프 진입방지 제한) MSSQL 힌트 중 'MAXRECURSION'이라는 힌트가 존재한다 MAXRECURSION 힌트란? MSSQL에서 사용하는 최대 재귀 횟수 설정하는 힌트입니다. 잘못 구성된 재귀 공통 테이블 식이 무한 루프에 진입하는 것을 방지하는 데 MAXRECURSION을 사용할 수 있습니다. MAXRECURSION 예제 아래에서는 의도적으로 무한 루프를 만들고 MAXRECURSION 힌트를 사용하여 재귀 수준을 2로 제한하는 방법을 보여 줍니다. 이 예에서는 AdventureWorks2016 데이터베이스를 사용합니다 --Creates an infinite loop use AdventureWorks2016 go WITH cte (CustomerID, PersonID, StoreID) AS ( SELECT Custom.. 2023. 4. 15.
[MSSQL] CROSS APPLY를 통한 성능개선(부분 범위처리 TOP 5) CROSS APPLY란? MSSQL에서는 CROSS APPLY 조인 방식을 지원합니다. 인라인 뷰(FROM 절의 서브쿼리)에서 조인 조건으로 전달받은 값을 뷰 안에서 사용 할 수 있도록 지원합니다. CROSS APPLY 성능비교 예제 이번 예제는 T_OUTER 테이블의 gid=1 데이터와 T_INNER 테이블을 조인한 결과에서 id별로 가장 최근 데이터를 5개씩만 출력하는 구문이다. T_OUTER 테이블은 100개의 행을 가지며 id가 1~100까지, 그 중 gid=1 인 행이 50개 gid=2인 행이 50개씩 있다 인덱스 PK_T_OUTER (id) T_OUTER (gid) INCLUDE (id) T_INNER 테이블은 1,000,000 행을 가지며 id가 1~100까지 각 id마다 10,000건씩 존.. 2023. 4. 15.
[MSSQL]Index spool(Eager, Lazy)개념 및 차이점 실행 계획을 보다 보면 index spool(Eager Spool, Lazy Spool) 같은 스풀 연산자 계획을 볼 수 있다. Spool 이란 무엇이며 어떤 상황에서 발생하는지 알아보고 spool을 제거하는 방법에 대해서 추가로 알아보자. Spool이란? - 스풀 작업은 단순히 데이터의 임시 저장소입니다 . - 데이터는 원본 테이블에서 읽고 Tempdb 데이터베이스의 작업 테이블에 저장됩니다 - 옵티마이저가 테이블 또는 인덱스에 대한 다중 액세스를 수행하는 것보다 작업 테이블에서 데이터를 읽는 것이 더 효율적이라고 평가할 때 사용됩니다 Eager Spool Eager Spool 및 Lazy Spool은 항상 다른 물리적 스풀 연산자와 함께 표시됩니다. Eager Spool은 이전 오퍼레이터의 요청을 받.. 2023. 4. 15.
[MSSQL]관계읽기(데이터 모델링 필수관계 선택관계) 관게 읽기 먼저 관계에 참여하는 엔터티 기준으로 하나 또는 각각으로 읽고 대상 엔터티의 개수를 읽고 관계 선택사항과 관계명을 읽도록 한다. -각각의 사원은 한 부서에 항상 속한다. -각 부서에는 여러 사원이 때때로 소속된 2023. 4. 15.
[MSSQL]INCLUDE INDEX(커버드/포괄 인덱스) 성능차이 설명 및 예제 MSSQL에는 일반 인덱스 말고 INCLUDE INDEX(커버드/포괄 인덱스) 라는 인덱스를 만들 수 있다. 이번 시간에는 INCLUDE INDEX(커버드/포괄 인덱스)가 무엇인지 알아보고 일반 인덱스와의 비교 테스트를 진행해 보려고한다. INCLUDE INDEX(커버드/포괄 인덱스)란? 포괄 열이 있는 인덱스는 비클러스터형 인덱스의 리프 페이지에 데이터를 포함하고 있는 열을 의미한다. 비클러스터형 인덱스가 클러스터형 인덱스보다 느린 이유는 리프 페이지 이후에 다시 데이터 페이지를 찾아가야 하기 때문에 느려지는데 포괄 열이 있는 인덱스는 리프 페이지에 데이터까지 같이 존재하므로 데이터 페이지를 찾아가지 않아도 비클러스터형 인덱스에서 모든 작업이 종료된다. 이 것은 마치 클러스터형 인덱스를 검색하는 효과를.. 2023. 4. 15.
반응형