2010-08-04 9 views
1

내 SSRS 보고서에 사용할 표준화 된 SQL 스크립트를 만들려고합니다. 나는 문 등이하고자하는 경우 :IN vs = where 절에서

Select * from mytable 

및 where 절에 SQL 변수 (SSRS 매개 변수)를 사용하여,이를 사용하는 어떤 속도 장점이있다 :

필드 = @MyField

VS. 필드 IN (@MyField)

내가 두 번째 옵션을 알고

은 복수 선택 및 단일 선택 처음 지원하지만 단 하나를 모두 지원합니다.

일관성을 위해 IN 문을 사용하여 모든 쿼리를 작성하면 성능이 저하됩니까?

답변

3

성능에 영향이 없습니다. 옵티마이 저는 IN을 일련의 = 연산 OR로 변환합니다.

참고로 실제 검색어에 SELECT *를 사용하지 않기를 바랍니다.

+0

아니요, 물론 아닙니다. Field1, field2 등을 입력하는 것보다 시간을 절약하는 것이 었습니다. – DavidStein

+1

'select * '의 문제점은 무엇입니까? –

0

하나의 인수 옵티마이 저는 실제 실행 문에서 해당 IN을 =로 변경합니다.

이 두 인수는 모두 Sargeble입니다 (Joe Stefanelli는 관심을 가져 주셔서 감사합니다). 성능의 차이는 in 절에 시퀀스 값이있는 곳에서 찾을 수 있습니다. 예를 들어 IN (1,2,3,4,5,6)between 1 and 6보다 느립니다. 인덱스의 IN은이 경우 각 값에 대해 한 번만 6 번 읽어야하기 때문입니다.

+1

올바르지 않습니다. IN은 sargable이며, IN은 sargable이 아닙니다. –

+0

일부 인터넷 검색 후 난 당신이 권리가 있다는 것을 인정해야합니다, 일부 개발자의 블로그에 이것은 또한 용납 할 수 없다고 쓰여졌습니다. 감사. –

+0

이전 질문에 대한 비슷한 대답을 주셨습니다. 그 답을 수정하고 싶을 수도 있습니다. http://stackoverflow.com/questions/3353084/sql-efficiency-vs-in-vs-like-vs-matches/3353223#3353223 –

0

IN 절에 항목이 많으면 성능이 느려집니다

관련 문제