다음을 통해 공유


SR0004: IN 조건자에서 테스트 식으로 인덱스가 없는 열을 사용하지 않습니다.

규칙 ID

SR0004

범주

Microsoft.Performance

변경 수준

주요 변경 아님

원인

인덱스가 없는 열을 참조하는 IN 조건자입니다.

규칙 설명

IN 조건자의 일부로 인덱싱되지 않은 하나 이상의 열을 참조하는 WHERE 절을 사용하는 경우 테이블을 스캔하게 됩니다. 테이블 스캔은 성능을 줄일 수 있습니다.

위반 문제를 해결하는 방법

이 문제를 해결하려면 다음 중 하나를 변경해야 합니다.

  • 인덱스가 있는 열만 참조하는 IN 조건자를 변경합니다.

  • IN 조건자가 참조하고 아직 인덱스가 없는 모든 열에 인덱스를 추가합니다.

경고를 표시하지 않는 경우

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

예제

이 예제에서 간단한 SELECT 문은 인덱스가 없는 열 [c1]을 참조합니다. 두 번째 문은 이 경고를 해결하려면 추가할 수 있는 인덱스를 정의합니다.

CREATE PROCEDURE [dbo].[Procedure3WithWarnings]
AS
SELECT [Comment] 
FROM [dbo].[Table2]  
WHERE [c1] IN (1, 2, 3)

CREATE INDEX [IX_Table2_C1]
ON [dbo].[Table2] (c1);

참고 항목

개념

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