나는 이것에 대해 매우 혼란스러워합니다. 최종 SQL 문이 동적으로 작성되고 많은 함수와 프로 시저가이 작업에서 역할을하기 때문에 예제를 제공 할 수 없습니다 ...T-SQL - INNER MERGE JOIN이 여러 조인을 더 빨리 수행하도록 정의하는 이유는 무엇입니까?
일반적으로 5 개의 조인이 있습니다. 나는 그 중 하나를 제거하면 문장이 0 초 동안 실행되고, 그렇지 않으면 4 분 이상 실행되는 것으로 나타났습니다. 그런 다음 실제 실행 계획을 살펴보고 "병합 조인"에 많은 비용이 소요된다는 사실을 알게되었습니다. Google에서 검색하면 'INERER MERGE JOIN'또는 'OPTION (MERGE JOIN)'을 사용하여 문을 닫을 수 있습니다.
쿼리가 0 초 동안 실행되기 때문에 정말 좋았습니다. 하지만 내 질문은 왜?
약간의 연구를했는데 MERGE 조인을 사용하려면 두 문을 정렬해야한다는 것을 알았습니다. 제 경우는 아니지만 0 초 만에 올바른 결과를 얻습니다.
왜 T-SQL 아이디어로 인해이 문제가 발생할 수 있습니까?
나는 이미 해결책이 있지만 나는 이것이 왜 작동하고 있으며 어떤 일이 일어나고 있는지 알고 싶다. 이런 일이 왜
"병합"옵션을 사용해야 할 때 - 높은 비용의 연산이 포함 된 중첩 루프가있을 때마다? – gotqn
@Joro 모든 쿼리 힌트는 실행 계획을보고 SQL Server가 왜 최상의 계획을 제공하지 않는지를 확인한 후에 최후의 수단으로 사용해야합니다. –