SR0006: 열 인덱스를 사용하기 위해 비교 연산자의 한 쪽에 대한 열 참조를 이동합니다.

규칙 ID

SR0006

범주

Microsoft.Performance

변경 수준

주요 변경 아님

원인

비교의 일부로 식에 열 참조가 들어 있습니다.

규칙 설명

열 참조를 포함하는 식을 비교하는 경우 코드가 테이블 스캔을 실행할 수 있습니다.

위반 문제를 해결하는 방법

이 문제를 해결하려면 열 참조가 식 내부가 아닌 비교 연산자의 한쪽에만 나타나도록 비교를 재작업해야 합니다. 비교 연산자의 한쪽에서만 열 참조가 있는 코드를 실행할 때 SQL Server는 열 색인을 사용할 수 있으며 테이블 스캔은 수행할 수 없습니다.

경고를 표시하지 않는 경우

열이 비교되는 테이블에 몇 개의 행이 포함되지 않는 경우 이 경고를 표시하지 않을 수 있습니다.

예제

첫 번째 프로시저에서 WHERE 절은 비교의 일부로 식에 [c1]을 포함합니다. 두 번째 프로시저에서 비교 결과는 동일하지만 테이블 스캔이 필요하지 않습니다.

CREATE PROCEDURE [dbo].[Procedure3WithWarnings]
@param1 int
AS
SELECT [c1], [c2], [c3], [Comment] 
FROM [dbo].[Table2]  
WHERE ([c1] + 5 > @param1)

CREATE PROCEDURE [dbo].[Procedure3Fixed]
@param1 int
AS
SELECT [c1], [c2], [c3], [Comment] 
FROM [dbo].[Table2]  
WHERE ([c1] > (@param1 - 5))

참고 항목

개념

데이터베이스 코드를 분석하여 코드 품질 향상