Eu tenho uma variável de tabela:
DECLARE @to_process TABLE
(
[Id] [bigint] NOT NULL,
[SequenceId] [bigint] NOT NULL,
...
)
INSERT INTO @to_process
( Id
, SequenceId
...
)
SELECT
TOP (@recordsToProcess)
Id
, SequenceId
...
no meu procedimento armazenado. Eu investiguei que a inserção gasta cerca de 66% do tempo total de execução.
Como posso melhorar ou otimizar meu código para acelerar a execução do sp?
ADICIONADO:
Primeiro pensamento...
Se você tiver dados suficientes para obter essa porcentagem do lote, use um #temptable.
Quando a variável de tabela é usada posteriormente, é sempre assumido que tem uma linha: não há estatísticas nesta variável de tabela. Portanto, se você tiver vários 1000, os planos subsequentes não serão ideais.
As tabelas temporárias têm estatísticas (e índices, se necessário, etc.) e podem ter um desempenho melhor para conjuntos de dados maiores