Napoleão,
Crie um indice nas colunas CAMPO da tabela TABELA Crie um indice na coluna CAMPO da #TMP Crie um indice na coluna CAMPOB da #TMP2 Depois altere o seu insert into #TMP3 para: insert into #TMP3 SELECT Y.CAMPO1, Y.CAMPO2 FROM TABELA Y WHERE Y.CAMPO = 'ALGUMA COISA' AND NOT EXISTS (SELECT 1 FROM #TMP WHERE CODIGO = Y.CAMPO) AND EXISTS ( SELECT 1 FROM #TMP2 WHERE CODIGO = Y.CAMPOB ) Abs, Carlos Martello DBA Oracle / Consultor de Tecnologia TEL: 55+21+3094-6250 Choice Technologies S/A - Inteligência em Energia e-mail: [EMAIL PROTECTED] De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Napoleão Cristiano X. Sanabia Enviada em: terça-feira, 25 de novembro de 2008 14:19 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Melhor Performance Pessoal Tenho um sistema que cria 3 tabelas temporárias, insere dados nelas e as utiliza em outras queries. Só que a minha tabela #TMP2 tem bastante registros e tá deixando todo meu procedimento lento. Questão: Ilustrei abaixo o que o programa está fazendo. Qualç seria a melhor forma de resolver meu problema de performance nesse caso? CREATE TABLE #TMP (codigo varchar(50) primary key) insert into #tmp SELECT DISTINCT campo1, campo 2 from tabela where campo1 = 1 CREATE TABLE #TMP2 (CODIGO VARCHAR(50)) INSERT INTO #TMP2 SELECT DISTINCT campo1, campo 2 from tabela2 where campo = 1 CREATE TABLE #TMP3 (TIPO VARCHAR(100), NM_TIPO VARCHAR(100)) insert into #TMP3 SELECT Y.CAMPO1, Y.CAMPO2 FROM (SELECT CAMPOA, CAMPOB FROM TABELA WHERE CAMPO = 'ALGUMA COISA') Y WHERE Y.CAMPO NOT IN ( SELECT CODIGO FROM #TMP ) AND Y.CAMPOB IN ( SELECT CODIGO FROM #TMP2 ) SELECT * FROM TABELA UNION SELECT * FROM #TMP3 Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]