728x90
MSSQL 힌트 중 'MAXRECURSION'이라는 힌트가 존재한다
MAXRECURSION 힌트란?
MSSQL에서 사용하는 최대 재귀 횟수 설정하는 힌트입니다.
잘못 구성된 재귀 공통 테이블 식이 무한 루프에 진입하는 것을 방지하는 데 MAXRECURSION을 사용할 수 있습니다.
MAXRECURSION 예제
아래에서는 의도적으로 무한 루프를 만들고 MAXRECURSION 힌트를 사용하여 재귀 수준을 2로 제한하는 방법을 보여 줍니다.
이 예에서는 AdventureWorks2016 데이터베이스를 사용합니다
--Creates an infinite loop
use AdventureWorks2016
go
WITH cte (CustomerID, PersonID, StoreID) AS
(
SELECT CustomerID, PersonID, StoreID
FROM Sales.Customer
WHERE PersonID IS NOT NULL
UNION ALL
SELECT cte.CustomerID, cte.PersonID, cte.StoreID
FROM cte
JOIN Sales.Customer AS e
ON cte.PersonID = e.CustomerID
)
--Uses MAXRECURSION to limit the recursive levels to 2
SELECT CustomerID, PersonID, StoreID
FROM cte
OPTION (MAXRECURSION 2);
GO
만약 힌트를 제거하고 무한루프 쿼리를 실행하면 어떤 결과를 가져올까?
아래와 같이 '최대 재귀 횟수(100)가 초과되었습니다.' 라는 오류 메시지가 발생한다.
최대가 기본으로 100으로 설정 되어있다.
반응형
그리드형
'IT > MSSQL' 카테고리의 다른 글
[MSSQL]실행계획을 2가지 방식으로 가져가게 하기위한 방법/분기처리 (0) | 2023.04.15 |
---|---|
[MSSQL] MDF, LDF 데이터 파일 물리적 위치변경 (0) | 2023.04.15 |
[MSSQL] CROSS APPLY를 통한 성능개선(부분 범위처리 TOP 5) (0) | 2023.04.15 |
[MSSQL]Index spool(Eager, Lazy)개념 및 차이점 (0) | 2023.04.15 |
[MSSQL]관계읽기(데이터 모델링 필수관계 선택관계) (0) | 2023.04.15 |
댓글