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