2012-12-18 3 views
0

복잡한 계산을 수행 할 때 쿼리의 시간 제한을 발생시키는 임시 테이블이 저장 프로 시저에 있습니다. 나는 그것을 사용한 후에 그것을 내리고 싶다. 그것은시간 제한 오류가 발생하는 저장 프로 시저 임시 테이블

DECLARE @SecondTable TABLE 

같이 생성 된 지금은 내가 누군가가 이유를 알고 있나요

drop #SecondTable 

를 사용해야 사실

drop @SecondTable 

를 사용하여 삭제할 수 없습니다?

답변

3

나는 SQL 전문가는 아니지만 드롭이 필요한 이유는 무엇입니까?

테이블 변수 인 경우 저장된 proc이 종료되면 더 이상 존재하지 않습니다.

저는 실제로 DROP #SecondTable이 오류를 나타내지 않습니다. 임시 테이블을 그곳에 떨어 뜨리기 때문입니다. 테이블 변수가 아닙니다. 그래서 귀하의 의견에 따라

편집, 내 업데이트는 다음과 같습니다 :

1) 당신이 테이블 변수 (@SecondTable)를 사용하는 경우; 드롭하지 않아도됩니다. SQL Server가이를 처리합니다.

2.) 시간 초과가 테이블 자체를 삭제하는 것이 아니라 테이블을 사용한 계산으로 인해 발생하는 것 같습니다. 이 경우; 테이블 변수 대신 임시 테이블을 사용하는 것이 좋습니다. 임시 테이블을 사용하면 인덱스 등을 추가하여 성능을 향상시킬 수 있습니다. 테이블 변수는 그렇지 않습니다. 여전히 충분하지 않다면; 쿼리 시간 초과 기간을 늘려야 할 수 있습니다.

3.) SQL에서; 테이블 변수 (@SecondTable)와 임시 테이블 (#SecondTable)은 완전히 다른 두 가지입니다. Table VariablesTemporary Tables

+0

에 대한 MSDN 설명서를 참조하면 저장소 proc 후에 드롭됩니다. 그러나 저장소 proc 자체에서는 임시 테이블을 여러 번 사용하여 시간이 초과되었습니다. 내 질문은 Drop #SecondTable과 Drop @SecondTable의 차이점은 무엇입니까? 나는 당신이 재미있는 변수를 얻지 못했습니다. – hussian

관련 문제