2010-12-31 1 views
15

SQL Server 저장 프로 시저에서 임시 테이블을 사용할 때와 커서를 사용할시기. 가장 좋은 옵션 성능 현명한가?SQL 서버 임시 테이블 대 커서

+0

을 나도 당신이 그것을 도울 수 있다면 :

는 당신이 읽을 제언한다. SQL은 SET 기반이며 일반적으로 대부분의 임시 테이블 및/또는 커서를 사용하는 상황을 처리 할 수 ​​있습니다. –

+1

왜 CTE가 필요하지 않습니까? http://msdn.microsoft.com/en-us/library/ms175972.aspx –

+1

여기에 약간 설명 할 수 있습니까? 커서를 사용하여 임시 테이블을 사용하는 것은 사과와 오렌지 같은 비트입니다. 임시 테이블 대 테이블 변수가 더 적절한 비교 일 것입니다. – tcnolan

답변

18

언제든지 의 전염병과 같은 커서를 피하십시오. SQL Server가 집합 기반입니다 - RBAR (행 단위로 행) 방식으로 수행해야하는 모든 작업이 느리고 느려지 며 SQL의 작동 원리에 위배됩니다.

귀하의 질문은 매우 모호합니다. 그 정보를 바탕으로, 우리는 당신이 무엇을 하려는지 실제로 말할 수 없습니다. 그러나 주요 권장 사항은 다음과 같습니다. 가능할 때마다 (대다수의 경우 가능) 집합 기반 작업 - SELECT, UPDATE, INSERT을 사용하고 SQL Server에 절차 적 사고를 강요하지 마십시오. 이것이 최선의 방법은 아닙니다.

임시 테이블을 채우고 사용하기 위해 집합 기반 연산을 사용할 수 있다면 매번 그 방법보다 커서를 사용하는 편이 낫습니다.

7

커서는 행 단위로 작동하며 성능이 매우 떨어집니다. 거의 모든 경우에 더 나은 설정 기반 코드로 대체 될 수 있습니다 (일반적으로 임시 테이블이 아님)

임시 테이블은 데이터 양과 사용자가 수행하는 작업에 따라 좋거나 다를 수 있습니다. 일반적으로 커서 대체물이 아닙니다. http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them