programing

T-SQL에 존재하는 경우

muds 2023. 10. 8. 10:24
반응형

T-SQL에 존재하는 경우

만약에.SELECT안에 있는 진술IF EXISTS, 테이블에서 레코드를 찾자마자 실행이 중지됩니까?예를 들어,

IF EXISTS(SELECT *  FROM  table1  WHERE Name='John' )

return 1

else

return 0

= John이라는 이름의 행이 테이블에 존재할 경우 실행을 중지하고 1을 반환합니까, 아니면 더 많은 일치 항목을 찾기 위해 테이블 전체를 통과합니까?

예, 실행이 중지되므로 일반적으로 다음을 수행하는 것이 좋습니다.HAVING COUNT(*) > 0그렇지 않을 때가 많습니다

와 함께EXISTS실행 계획을 보면 실제 행의 수가table1일치하는 레코드 수에 관계없이 1을 초과하지 않습니다.

경우에 따라 SQL Server는 다음을 위해 트리를 변환할 수 있습니다.COUNT에 대한 것과 동일하게 질의합니다.EXISTS단순화 단계에서(반접합이 있고 집계 연산자가 보이지 않는 상태에서) 이에 대한 예는 여기의 의견에서 논의됩니다.

질문에 나타난 것보다 더 복잡한 하위 트리의 경우 때때로 다음을 찾을 수 있습니다.COUNT보다 성능이 뛰어납니다.EXISTS하지만.세미 조인은 하위 트리에서 하나의 행만 검색하면 되기 때문에 트리의 해당 부분에 대해 중첩 루프가 있는 계획을 권장할 수 있습니다. 실제로는 최적으로 작동하지 않을 수도 있습니다.

이 경우에는 "다른"이 필요 없습니다.

IF EXISTS(SELECT *  FROM  table1  WHERE Name='John' ) return 1
return 0

언급URL : https://stackoverflow.com/questions/7327694/if-exists-in-t-sql

반응형