나는 쿼리를 작성 중이며 SQL Profiler 추적을 분석하여 쿼리의 성능과 속도를 모니터링합니다.3 개의 개별 쿼리를 결합한 TSQL 쿼리가 왜 느리게 실행됩니까?
이 작업을 수행하는 동안 동일한 테이블에서 3 가지 다른 선택을 실행하면 이러한 선택이 WHERE 절의 OR로 그룹화 된 경우보다 훨씬 빠르다는 것을 알았습니다.
A)
SELECT * FROM navigation_trees nt INNER JOIN contents c ON c.navigation_tree_id = nt.id WHERE nt.id = @NodeID
SELECT * FROM navigation_trees nt INNER JOIN contents c ON c.navigation_tree_id = nt.id WHERE nt.id = @ParentID
SELECT * FROM navigation_trees nt INNER JOIN contents c ON c.navigation_tree_id = nt.id WHERE nt.id IN (SELECT id FROM @ChildrenIDS)
B) 여기
SELECT * FROM navigation_trees nt INNER JOIN contents c ON c.navigation_tree_id = nt.id
WHERE
nt.id = @NodeID OR
nt.id = @ParentID OR
nt.id IN (SELECT id FROM @ChildrenIDS)
그리고 두 쿼리의 프로파일 측정 값입니다 :
CPU | Reads | Writes | Duration(ms)
A) 15 | 1095 | 0 | 26
B) 531 | 456139 | 0 | 541
당신이 되거 수 있습니까?
감사합니다.
두 검색어에 대한 계획을 보여 봤습니까? –
SQL Studio에서 실행 계획을 활성화하고 세부 정보를 확인하십시오. –
테이블에 몇 개의 레코드가 있는지 확인하십시오. 읽기를 정당화 할 것입니다. –