SQL 존재 여부와 차이점

Anonim

Sql Exists vs. In

TSQL에서의 문제 해결은 여러 가지 방법으로 가능하며 원하는 결과는 그 중 하나를 사용하여 볼 수 있습니다. 최종 결과를 얻는 방법 중 하나는 IN 및 EXISTS 절을 사용하는 것입니다. 절을 사용하면 사용할 수있는 하위 쿼리를 참조하여 결과 집합을 필터링 할 수 있습니다. IN과 EXISTS의 실행은 약간 다르며 평가되는 이러한 차이점이 있습니다.

IN 또는 EXISTS의 출시 여부를 결정하는 다양한 요소가 있습니다. 그 중 하나가 테이블에서 사용할 수있는 데이터 양입니다. 방대한 양의 데이터로 인해 SQL Server는 인덱스 검색을 사용하는 대신 인덱스 스캔을 사용하게됩니다.

차이점

주어진 통계는 또한 따라야 할 실행 계획에 대해 많은 것을 말해줍니다. 차이는 서버가 유효한 결정을 내리기에 충분한 통계를 축적하고 처음으로 통계가없는 경우에 표시됩니다. 사용중인 하드웨어는 IN 또는 EXISTS를 사용할 것인지 여부도 결정합니다. 이는 대개 사용 가능한 CPU 수에 따라 다릅니다.

EXISTS는 다른 하위 쿼리와 쿼리의 결과를 일치시킬 필요가있을 때 실행됩니다. 반면에 IN은 목록 내에있는 특정 열의 값을 검색 할 때 사용됩니다. 사용 결정은 전적으로 적합성에 의거합니다. 이자형. 그 사용이 적절하다고 생각할 때.

하위 쿼리가 사용되고 null 값이 반환되는 경우 전체 문이 NULL이됩니다. 이것은 실제로 EXISTS 키워드의 사용을 가리 킵니다. IN 키워드의 사용은 서브 쿼리의 다양한 값을 비교해야 할 때 발생합니다. EXISTS 키워드는 주로 true 또는 false 문의 평가에 사용되고 IN은 대부분의 해당 하위 쿼리 문에서 사용됩니다.

일반적으로 EXISTS는 IN보다 빠릅니다. EXISTS가 실행될 때 검색 결과가 발견되어 그 조건이 사실인지 여부를 검토하게됩니다. IN을 실행하면 하위 쿼리의 모든 결과를 수집하고 추가 처리를 위해 제시하며이 프로세스는 어느 정도 시간이 걸립니다.

쿼리 구문은 올바르게 수행되어야하며 실행 전에 확인해야합니다. 쿼리가 올바른지 확인하지 못하면 EXISTS 및 IN이 서로 다른 값을 나타내며 SQL 서버에서 사용하는 것이 아닙니다. 옵티마이 저는 필요한대로 작업 할 때 항상 최적이어야합니다.

요약

TSQL의 문제 해결은 일반적으로 EXISTS 및 IN을 사용하여 수행됩니다.

EXISTS 및 IN을 롤아웃 할 때 약간의 차이가 있지만 각 값에 대한 최적화는 동일한 값을 제공해야합니다.

통계는 존재 여부를 결정하는 요인 중 하나입니다.

사용중인 하드웨어 또한 존재 여부를 결정하는 데 중요합니다.

존재하는 경우 실행은 유용합니다 주어진 쿼리의 결과를 다른 하위 쿼리와 상관시킬 필요가 있습니다.진실 또는 거짓 진술이 평가를 필요로 할 때 EXISTS 또한 매우 일반적입니다.

IN은 일반적으로 목록의 특정 열을 검색해야하는 경우에 사용됩니다. 또한 하위 쿼리에서 값 비교가 필요할 때 주로 사용됩니다.

EXISTS는 실행될 때 IN보다 일반적으로 빠르며 적중을 발견하고 하위 조건의 모든 결과를 수집하고 처리 할 때 조건이 true인지 여부를 검토합니다.

IN이 느립니다.

다른 실행이 존재하더라도, 최적화는 EXISTS 및 IN에서 유사한 결과를 제공해야합니다.