SQL Server - Эффективное хранение результатов запроса в таблице отслеживания. - PullRequest
2 голосов
/ 16 сентября 2009

Меня попросили отслеживать, сколько раз каждый элемент появляется в результатах определенного запроса. Моя мысль состоит в том, чтобы просто сохранить результат запроса в таблице отслеживания, а затем выплевывать результаты обратно вызывающей стороне. Мне интересно, каким будет наиболее эффективный способ хранения этих результатов, поскольку набор результатов может включать до 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 ]

3 голосов
/ 16 сентября 2009

Вам не нужна таблица @Results.

Непосредственная вставка и выбор из TableA делает работу и, скорее всего, будет наиболее эффективным способом.

DECLARE @QueryTime DATETIME
SET @QueryTime = GetDate()
INSERT INTO TableB
SELECT X, @QueryTime FROM TableA
SELECT X, Y FROM @TableA
1 голос
/ 16 сентября 2009

Если вы используете Sql 2008, вы можете вернуть строки в формате XML. Тогда вам просто нужно вставить 1 строку в таблицу отслеживания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...