문제

나는 이것이 꽤 기본적인 질문이라는 것을 알고 있습니다. 생각한다 답을 알고 있습니다 ...하지만 확인하고 싶습니다.

이 쿼리는 진정으로 동일합니까?

SELECT * FROM FOO WHERE BAR LIKE 'X'
SELECT * FROM FOO WHERE BAR ='X'

아마도 와일드 카드없이 사용하는 데있어 성능 오버 헤드가 있을까요?

선택적으로 Like & Wild Cards를 사용하는 앱이 있습니다. SP는 현재 와일드 카드를 사용하고 와일드 카드를 추가합니다. 저는 쿼리를 업데이트하여 사용하도록 업데이트 할 생각이지만 앱이 필요에 따라 와일드 카드를 추가하도록합니다.

도움이 되었습니까?

해결책

@ocdecio가 말했듯이, 최적화가 똑똑하다면 차이가 없지만, 무대 뒤에서 무슨 일이 일어나고 있는지 확인하려면 두 쿼리의 실행 계획을 비교해야합니다.

다른 팁

Matt Whitfield의 원래 답변 여기

차이가 있습니다 ~ 사이 = 그리고 LIKE. 사용하여 문자열 비교를 수행 할 때 LIKE, 패턴 문자열의 모든 문자는 중요합니다. 여기에는 선행 또는 후행 공간이 포함됩니다.

따라서 열이 있다면 char 또는 nchar 그리고 아닙니다 nvarchar 또는 varchar, 후행 공간으로 인해 다른 결과가 있습니다.

이 행동을 재현하는 작은 예 :

CREATE TABLE #temp (nam [varchar](MAX))
INSERT INTO [#temp] ([nam])
VALUES ('hello')
INSERT INTO [#temp] ([nam])
VALUES ('hello  ')

SELECT * FROM #temp WHERE [nam] = 'hello  '

SELECT * FROM #temp WHERE [nam] LIKE 'hello  '

좋은 옵티마이저는 첫 번째 표현을 두 번째 표현으로 줄입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top