Fernando, valeu pela ajuda ai mas ficou lento do mesmo jeito, tava pensando em criar uma tabela temporária com o segundo select e depois fazer o filtro por ela que seria bem menor do que a tabela de pedidos original.
Alguem sabe como faz isso?? Grato. -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em nome de Fernando Nati Enviada em: quinta-feira, 15 de abril de 2010 17:14 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] [1/2OFF] SQL Lento no Firebird Amigão, Não usa o IN, usa o NOT Exists. Ex: SELECT CLI.COD_CLI, CLI.NOME_CLI FROM CLIENTES CLI WHERE CLI.SITUACAO = '2' AND NOT EXISTS ( SELECT 1 FROM SAI_CAB CAB WHERE CAB.DIGITO = 'O' AND CAB.DT_PEDIDO > '01/01/2010' AND CAB.COD_CLI = CLI.COD_CLI ) Testa aí e vê se resolveu!. Fernando Nati. 2010/4/15 Iran Lima <i...@sgisolution.com.br> > > > Galera estou executando o sql: > > SELECT CLI.COD_CLI, CLI.NOME_CLI > > FROM CLIENTES CLI > > WHERE CLI.SITUACAO = '2' > > AND COD_CLI NOT IN ( > > SELECT DISTINCT(CAB.COD_CLI) > > FROM SAI_CAB CAB > > WHERE CAB.DIGITO = 'O' AND CAB.DT_PEDIDO > '01/01/2010' > > ) > > Nele tem 2 Select executando separadamente da certa de 1s cada um, como > podem ver o segundo select é so para filtrar o primeiro. > > Quando executo o SQL completo o mesmo demora muiiiiito como se escutasse o > segundo Select para cada registro do primeiro (burrice do firebird) sendo > assim como criar uma tabela temporária com os registros do segundo select > para fazer o filtro ficar + rápido. > > Grato > > Iran. > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>