Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Ter Mai 12, 2020 6:37 pm Assunto: Sql muito demorada ou travada (RESOLVIDO POR IMEX) |
|
|
Pessoal, estou fazendo uma select em firebird com firedac mas esta demorando muito pra retornar ... tipo o dia todo ...
select * from aca300 where not aca300.cod_pessoa in(select aca302.codinter from aca302)
aca300 tem uns 500.000 registros, é a tabela dos clientes
aca302 tem uns 68.000 registros, é a tabela de pedidos
quero pegar todas as pessoas que tem pedido ou todas as pessoas que não tem pedido ...
qual a maneira certa de fazer isso ?
Editado pela última vez por vilson.x em Seg Mai 18, 2020 1:47 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Mai 13, 2020 9:49 am Assunto: |
|
|
Bom dia,
Acho que para esse caso seja melhor utilizar o operador Exists. Ex:
Código: | select * from aca300
where not exists (select 1 from aca302 where aca302.codinter = aca300.cod_pessoa) |
Se por acaso você não criou, também seria interessante criar uma foreign key na tabela de pedidos referenciando a tabela de clientes pelo código do cliente para melhorar o desempenho e a consistência dos dados.
Espero que ajude
Editado pela última vez por imex em Dom Out 01, 2023 5:40 pm, num total de 2 vezes |
|
Voltar ao Topo |
|
 |
vilson.x Novato

Registrado: Segunda-Feira, 8 de Agosto de 2011 Mensagens: 97
|
Enviada: Seg Mai 18, 2020 1:46 pm Assunto: |
|
|
Obrigado Imex.
Melhorou bastante o tempo de espera.
Demora muito ainda, tipo umas 6 horas, mas ja deu pra eu produzir os relatórios que o cliente estava precisando em uns 3 dias ...rsrs |
|
Voltar ao Topo |
|
 |
|