2009-12-18 5 views
8

여러 임시 테이블을 만든 다음 데이터를 삽입하는 쿼리가 있습니다. 나는 이것이 테이블 스풀의 잠재적 인 원인이라는 것을 이해합니다. 내 실행 계획을 살펴보면 대량의 내 처리가 표 스풀에 소요됩니다. 이러한 유형의 성능 문제를 개선하는 데 유용한 기술이 있습니까? 뷰 또는 CTE를 사용하면 임시 테이블에 비해 어떤 이점도 있습니까?SQL Server에서 테이블 스풀 제거 실행 계획

각 테이블 스풀 위에 마우스를 올려 놓으면 출력 목록이 동일한 임시 테이블에 있음을 알았습니다.

답변

15

글쎄, 내가 준 정보는 쿼리 최적화 프로그램이 최선의 계획을 선택했다는 것입니다. 실행 속도를 높이기 위해 테이블 ​​스풀을 사용합니다. 테이블 스풀을 사용하지 않는 대안은 더 느릴 수 있습니다.

쿼리, 테이블 스키마 및 카디널리티 및 계획 표시 방법에 대해 설명합니다.

업데이트

당신이 우리에게 쿼리를 표시 할 수 없습니다 만약 내가 확실히 알고 있습니다. 그러나 스풀링이 어떤 세부 사항을 알고있는 엔진에 의해 preffered되었는지 왜 추측하기가 정말로 어렵습니다. Craig Freedman의 블로그를 방문하는 것이 좋습니다. 그는 쿼리 최적화 팀의 엔지니어이며 SQL 2005/2008 최적화 도구의 내부 동작에 대해 많이 설명했습니다.

SQL 고객 지원 팀은 또한 흥미로운 블로그를 가지고 몇 가지 항목이 나는 빨리 그 한 형태 또는 다른에서 스풀링의 주제를 만지지 찾을 수 있습니다 http://blogs.msdn.com/psssql/
그리고 'sqltips'(관계형 엔진의 팀 블로그)에는 Spool operators in query plan...

과 같은 몇 가지 팁이 있습니다.
+0

불행히도 내 작품이 그 종류의 정보를 공유하는 것을 좋아하지 않을 것이라고 생각합니다. 스풀링에 대한 나의 이해는 제한적이지만 임시 테이블을 다시 참조 할 때 스풀링이 사용되었다고 생각했습니다. 색인 된보기에 정보를 넣지 않으면 성능에 부정적인 영향을 미치지 않으면서도 정보를 얻을 수 있습니까? –