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%'