Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server—高效地将查询结果存储在跟踪表中_Sql_Sql Server_Tsql - Fatal编程技术网

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

SQL Server—高效地将查询结果存储在跟踪表中,sql,sql-server,tsql,Sql,Sql Server,Tsql,我被要求跟踪每个项目在特定查询结果中出现的次数。我的想法是将查询结果存储到跟踪表中,然后将结果吐回调用方。我想知道存储这些结果的最有效方法是什么,因为结果集最多可以包含1000条记录 我的计划是将查询结果拉入临时表,并将这些结果插入跟踪表,然后将临时表作为存储过程的结果返回。大概是这样的: DECLARE @QueryTime datetime SET @QueryTime = GETDATE() DECLARE @Results TABLE (X nvarchar(255), Y nvarc

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

我的计划是将查询结果拉入临时表,并将这些结果插入跟踪表,然后将临时表作为存储过程的结果返回。大概是这样的:

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

是否有人有更有效的方法将批量结果集发布到跟踪表中?

您不需要@Results表

直接插入并从表中选择就可以了,而且很可能是最有效的方法

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

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

谢谢,效果很好。有时候,你只需要把事情精简一下。不知道为什么我如此反对运行两次查询。