처음에 막연한 주제 이름을 유감스럽게 생각합니다 (나는 더 나은 것을 생각할 수 없었습니다).SQL Server IN vs = 쿼리에서 (하나의 값에 대해)
SO 대답은 IN에 대해 =
을 집어 넣을 때 성능에 영향이 있는지를 생각해 보았습니다.
select 1 id, 'abc' name into #a union
select 2, 'abcd' union
select 3, 'abcde'
select * from #a where id = 1 ------ Query 1
select * from #a where id in (1)------ Query 2
두 쿼리에 대한 쿼리 계획을 확인한 후 나에게도 동일한 것으로 나타났습니다 (아마 그 이유는 단순한 것일 수도 있습니다).
IN
을 사용할 때 성능 우수 사례를 위반하고 있습니까? 물론 오버 헤드가 포함되어야합니다. IN
은 여러 항목을 처리 할 수 있으며 심지어는 SELECTS
을 처리 할 수 있습니다. query4이 작동 할 동안
select * from #a where id = (SELECT id from #a where id = 1)------ Query 3
select * from #a where id in (SELECT id from #a where id = 1)------ Query 4
QUERY3는 실패, 나는 IN
이 기능의 측면에서 훨씬 더 제공합니다 알고 있지만, 경우에 여러 레코드가 id = 1
을 위해있을 때. 따라서 앞으로 =
을 IN
으로 바꾸고 싶습니다. 그러나 나는 잠재적 인의 트레이드 오프를 알고 싶다.
EDIT 나는 SQL 엔진이이 문장을 어떻게 처리 하는지를 배우는 데 관심이있다.
일반적으로 쿼리 3과 4를 조인으로 다시 작성하므로 IN 또는 =이 필요하지 않습니다. –
이것을 고려해보십시오. – SouravA
"="연산자는 "IN"보다 빠릅니다. 사용을 확인하고 싶다면 통계 시간 설정 켜기 –