다음을 통해 공유


SR0005: LIKE 조건자에서 “%”로 시작하는 패턴을 사용하지 않습니다.

규칙 ID

SR0005

범주

Microsoft.Performance

변경 수준

주요 변경 아님

원인

WHERE 절의 LIKE 조건자는 와일드카드 문자 "%"로 시작합니다.

규칙 설명

'%pattern string' 같은 LIKE 조건자가 포함된 WHERE 절을 사용하여 열 어딘가에 있을 수 있는 텍스트를 검색하는 경우 테이블을 스캔할 수 있습니다.

위반 문제를 해결하는 방법

이 문제를 해결하려면 와일드카드(%)가 아닌 문자로 시작하거나 전체 텍스트 인덱스를 만들도록 검색 문자열을 변경해야 합니다.

경고를 표시하지 않는 경우

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

예제

첫 번째 예에서는 와일드카드 문자로 검색 문자열을 시작하기 때문에 SELECT 문에서 테이블 스캔이 발생합니다. 두 번째 예제에서는 와일드카드 문자로 검색 문자열을 시작하지 않기 때문에 SELECT 문에서 인덱스 탐색이 발생합니다. 인덱스 검색은 WHERE 절과 일치하는 행만 검색합니다.

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE '%pples' 

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE 'A%' 

참고 항목

개념

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