SQL Server - 有效地将查询结果存储在跟踪表中

时间:2009-09-16 14:49:54

标签: sql sql-server tsql

我被要求跟踪每个项目在特定查询结果中出现的次数。我的想法是只将查询结果存储到跟踪表中,然后将结果吐回给调用者。我想知道存储这些结果的最有效方法是什么,因为结果集最多可包含1000条记录。

我的计划是将查询结果拉入临时表并将这些结果插入到跟踪表中,然后返回临时表作为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 个答案:

答案 0 :(得分:3)

您不需要@Results表。

从TableA直接插入和选择可以完成工作,并且很可能是最有效的方式。

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

答案 1 :(得分:1)

如果您使用的是Sql 2008,则可以将行作为XML返回。然后,您只需要在跟踪表中插入一行。