2014-10-09 5 views
0

쿼리에서 CTE를 정확히 처리하는 방법에 대해 알고 싶습니다. VIEW의 경우 쿼리가 기본 쿼리와 병합 된 다음 옵티 마이저가 병합 된 쿼리의 계획을 구문 분석하고 작성한다는 것을 알고 있습니다. 따라서 조회가 주요 조회의 표에 추가 할 표가 많으면 성능 저하를 일으킬 수 있으므로보기가 권장되지 않는 경우가 있습니다.MSSQL non-recursive CTE 처리

CTE도 같은 방식으로 처리됩니까?

+0

도움이 될 수 있습니다. http://explainextended.com/2009/11/18/sql-server-are-the-recursive-ctes-really-set-based/ –

+0

링크 해 주셔서 감사합니다. 그러나 재귀 적 CTE에 대해서만 설명합니다. 비 재귀 CTE가 어떻게 처리되는지 알고 싶습니다. – Papal

답변

0

간단한 상황 (http://www.sqlfiddle.com/#!6/a1ea2/1/0)에서 실행 계획이 어떻게 동일 할 수 있는지 보여주는 SQL Fiddle을 설정했습니다.

일반적으로 구체적인 내용이 없으면 비회원 CTE는보기 또는 하위 쿼리와 동일하게 작동합니다. 여기서는 통계를 저장하는 뷰를 인덱싱하지 않으며 적절한 클러스터되지 않은 인덱스를 사용하여 쿼리 성능에 이점을 제공한다고 가정합니다.