我被要求跟踪每个项目在特定查询结果中出现的次数。我的想法是只将查询结果存储到跟踪表中,然后将结果吐回给调用者。我想知道存储这些结果的最有效方法是什么,因为结果集最多可包含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
有没有人有更有效的方法将批量结果集发布到跟踪表中?
答案 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返回。然后,您只需要在跟踪表中插入一行。