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))