IN은 정적 복합 쿼리 결과를 캐시 할 것인지 아니면 각 행에 대해 실행될 것인지 알고 싶습니다.복잡한 정적 선택에 대한 현재의 SQL Server 성능 비교 EXTYIST
SAMPLE은
이제SELECT a.id, a.name
FROM customer a
WHERE a.id IN (SELECT b.customerId
FROM orders b
JOIN aricle c ON c.orderId = b.id
WHERE b.date = '20160910' and c.costcenter > 1000)
, 서브 쿼리의 결과를 일시적으로 저장됩니다 또는 EXIST
빨리 이것에 대한 것입니까?
결과가 단지 몇 개의 행인 < 100이지만 쿼리가 훨씬 더 복잡 할 수 있다고 가정 해 봅시다!
나는이 경우 테이블에 가입 할 수도 있음을 알고 있지만 그 점은 중요하지 않습니다. 당신이 SQR의 행동에 특별히 관심이 있다면
내가 현재 SQL 서버의 동작에 특히 관심이
감사합니다 모두가
나는 당신이 무엇을 요구하고 있는지 정확하게 이해하지 못합니다. 당신이 찾고있는 것이 무엇인지 명확하게 설명해 주시겠습니까? –
SQL Server는 EXIST와는 대조적으로 값 집합을 찾고 있기 때문에 IN이 더 빠를 것이라고 생각합니다. EXIST에서는 각 값을 얻기 전에 각각의 값을 찾아야합니다. 이 쿼리에서는 어느 쪽도 조작에 너무 부담 스러울 것입니다. –
기본적으로 테스트 할 데이터가 많은 경우'in'은 느리게 작동하고'exists'는 작동합니다. 만약 당신이 100 열을 말하는다면 아무런 차이가 없어야합니다. –