2009-09-16 3 views
2

특정 쿼리의 결과 내에서 각 항목이 몇 번이나 나왔는지 추적하도록 요청 받았습니다. 내 생각은 쿼리 결과를 추적 테이블에 저장 한 다음 결과를 호출자에게 다시 보냅니다. 결과 집합에 최대 1000 개의 레코드가 포함될 수 있기 때문에 이러한 결과를 저장하는 가장 효율적인 방법이 무엇인지 궁금합니다.SQL Server - 효율적인 쿼리 결과를 추적 테이블에 저장

내 계획은 쿼리 결과를 임시 테이블로 가져 와서 그 결과를 추적 테이블에 삽입 한 다음 SPROC의 결과로 임시 테이블을 반환하는 것입니다. 이런 식으로 뭔가 :

DECLARE @QueryTime datetime 
SET @QueryTime = GETDATE() 

DECLARE @Results TABLE (X nvarchar(255), Y nvarchar(255)) 

INSERT INTO @Results 
SELECT X,Y FROM TableA 

INSERT INTO TableB 
SELECT X, @QueryTime FROM @Results 

SELECT X, Y FROM @Results 

사람이 추적 테이블에 설정 벌크 결과를 게시 할 수있는보다 효율적인 방법이 있습니까?

답변

2

@ 결과 테이블이 필요하지 않습니다.

TableA에서 직접 삽입하고 선택하면 작업이 가장 효율적일 수 있습니다.

DECLARE @QueryTime DATETIME 
SET @QueryTime = GetDate() 
INSERT INTO TableB 
SELECT X, @QueryTime FROM TableA 
SELECT X, Y FROM @TableA 
+0

감사합니다. 때때로 물건을 다듬는 것만으로도 충분합니다. 왜 내가 쿼리를 두 번 실행하는 것에 반대했는지 확신 할 수 없습니다. –

1

SQL 2008을 사용하는 경우 행을 XML로 반환 할 수 있습니다. 그런 다음 추적 테이블에 삽입 할 행이 1 개만 있으면됩니다.

관련 문제