2009-09-16 22 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

您不需要@Results表。

從TableA直接插入和選擇做這項工作,很可能是最有效的方法。

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

謝謝,這工作得很好。有時候只需要修剪東西就可以了。不知道爲什麼我反對運行查詢兩次。 – 2009-09-16 15:14:34

1

如果您使用Sql 2008,則可以將行作爲XML返回。然後你只需要將1行插入到你的跟蹤表中。