2012-01-06 4 views
2

테이블 값 매개 변수 @section이있는 SProc가 dbo.SectionIn입니다. 이 param은 SProc에서 사용되고 있으며, 일부 레코드를 제거하고 싶습니다. 물론 ReadOnly는 설계되었습니다.테이블 값 매개 변수 읽기 전용 일괄 처리

The table-valued parameter "@sections" is READONLY and cannot be modified. 

내 계획은 그 내용을 테이블 변수에 복사하여 대신 사용하는 것입니다.

DECLARE @sectionDups as dbo.SectionIn 
    INSERT INTO @sectionDups 
    SELECT * 
    FROM @sections 

내 질문이이 쿼리 계획 아니라면 어떤 성능 저하, 처음에 읽기 전용 요구 사항 뒤에 추론은 무엇 부과됩니다입니까?

답변

0

때문에 테이블을 복사 성능 저하가있을 것이다, PARAM 테이블에서 더 많은 행이수록 성능이 아파요하지만 읽기 전용의 유일한 이유 AFAIK SP

의 총 실행에 무시할 수있는 경우 tvp는 SQL 서버에서 매우 신선한 기능이기 때문에 읽기/쓰기가 아직 작성 중입니다. 따라서 환자가 됨

0

TVP 테이블 변수를 새 테이블 변수에 복사하지 마십시오. 당신이 행을 제외하려면 다음 중 하나를 수행합니다

  1. 원치 않는 행을 필터링 할 WHERE 절을 사용합니다.

    또는

  2. (# 단일) 로컬 임시 테이블을 만들고 그에게 TVP 데이터를 복사합니다. 그렇게 있지만 WHERE 절을 사용하여 요구하는 것 같다, 그래서 이것은 외부에서 많은 가치를 가지고 있지 않습니다 OPTION (RECOMPILE)가 해결 문 레벨을 사용하여 테이블 변수에 반대 (그러나 같은 임시 테이블에 대한

    • 더 나은 통계 하나)를 TVP
의 열을 이미 값을 수정
  • 기능을 추가 할 수
  • 능력