[quote=Zeed01]Boa noite Colegas !
thiagovedder:
Por favor se puder analisar a situação e me dar uma luz !
Veja como tem que funcionar:
-Tenho uma tabela com os dados principais, que tem pouco mais de 10 milhoes de registros.
-Para esta operação, tenho que, para cada registro dessa tabela principal, chamar uma proc que vai fazer consultas em outras tabelas, calculos, e por fim chegar num resultado conforme a caracteristica de cada registro…
-Esse resultado, mais algumas informações do registro original eu gravo numa tabela temporaria de saida, que uso para gerar os arquivos de saida no final.
-Para evitar mais selects no meio da proc, coloquei no cursor principal todas as tabelas, sempre fazendo join através das FK´s.
Não entendi como entraria a tabela temporaria nesse caso… pode me explicar melhor ?
Ou você esta falando de fazer algo mais ou menos assim:
Insert into temporaria
Select t1.campo1, t1.campo2, t2.campo3
from tabela1 t1,
tabela2 t2
where t1.chave = t2.chave
Depois não terei que montar um cursor usando a temporária do mesmo jeito ?
Desde já agradeço a colaboração !
Um abraço.[/quote]
Seria assim mesmo, porém como o glauber disse, quebrar em inúmeras consultas e retornar para uma temporária somente os dados essenciais para a manipulação seria fundamental, inclusive para posterior manutenção.
Um pseudocódigo em T-SQL pra ver se serve pra vc.
SELECT id_usuario, nome_usuario, cidade INTO #usuariosAtivos FROM usuarios WHERE status ='A'
SELECT id_usuario, valor_lancamento INTO #lancamentos FROM lctos l JOIN #usuariosAtivos u ON u.id_usuario = l.id_usuario
UPDATE #lancamentos SET ... (operações diversas que você venha a ter).
...
..
.
DROP TABLE #lancamentos
DROP TABLE #usuariosAtivos
Só considere verificar os indices e o plano de execução novamente para ver se existem pontos de melhoria.