t-SQL 배치에서 IF 문을 사용하는 것이 성능에 해롭다는 것이 나에게 제안되었습니다. 확인을 찾거 나이 주장을 확인하려고합니다. SQL Server 2005 및 2008을 사용하고 있습니다.
주장은 다음과 같은 배치입니다.
IF @parameter = 0
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
다음 실행에는 다른 분기가 필요할 수 있으므로 생성 된 실행 계획을 SQL Server에서 재사용 할 수 없습니다. 이는 SQL Server가 현재 실행에 대해 어느 분기가 필요한지를 이미 결정할 수 있다는 사실에 따라 실행 계획에서 하나의 분기를 완전히 제거한다는 것을 의미합니다. 이것이 사실입니까?
또한이 경우에는 다음과 같은 일이 발생합니다.
IF EXISTS (SELECT ....)
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
어느 브랜치를 실행할지 미리 결정할 수없는 곳은 어디입니까?