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

标签 sql sql-server t-sql

我被要求跟踪每个项目在特定查询的结果中出现的次数。我的想法是将查询结果存储到跟踪表中,然后将结果返回给调用者。我想知道存储这些结果的最有效方法是什么,因为结果集最多可以包含 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

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

最佳答案

您不需要@Results 表。

直接从 TableA 中插入和选择即可完成这项工作,并且很可能是最有效的方法。

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

关于SQL Server - 在跟踪表中有效存储查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1433490/

相关文章:

php - 在 PHP 文档中使用 SQL 查询数据库中的 2 个不同表时遇到困难

sql - 如何跨多个数据库查找不为空的特定表(大多数/所有)

sql-server - 将加密列复制到另一个数据库 SQL Server 2012

sql - 存储过程: reduce code duplication using temp tables

t-sql - 动态字段定义 - 这可以在 T-SQL 中完成吗?

excel - 使用 Excel 处理 SQL 数据(读/写)

java - 传递数据参数来更新 SQL 表

mysql - 查询在 MySQL 中返回一行

sql-server - SQL 服务器 : Return records within X days of a date

sql - 将列内包含 JSON 数组的行扩展到多行