Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2398 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde pessoal, atualmente possuo uma tabela de contas a receber com mais de 100.000 registros e uma tabela de clientes com mais de 50.000, ambos estão relacionadas pelo campo de código. Estou usando o sql abaixo pra atualizar o campo de maior atraso que está na tabela de clientes. segue abaixo o código

update clientes set clientes.maioratraso = (select max(areceber.atraso) from areceber where clientes.codigo = areceber.codcli and areceber.databaixa is null)

O código funciona, mas demora muito até terminar a rotina, alguém pode me ajudar a otimizar esse sql?

  • Moderadores
Postado
25 minutos atrás, Élviro Cavalcanti disse:

Boa tarde pessoal, atualmente possuo uma tabela de contas a receber com mais de 100.000 registros e uma tabela de clientes com mais de 50.000, ambos estão relacionadas pelo campo de código. Estou usando o sql abaixo pra atualizar o campo de maior atraso que está na tabela de clientes. segue abaixo o código

update clientes set clientes.maioratraso = (select max(areceber.atraso) from areceber where clientes.codigo = areceber.codcli and areceber.databaixa is null)

O código funciona, mas demora muito até terminar a rotina, alguém pode me ajudar a otimizar esse sql?

Qual o banco?

Você precisa atualizar TODA a tabela de clientes? São 50.000 selects e updates, é normal demorar...

Tem índice para a coluna CODCLI na tabela ARECEBER?

Tem triggers before update ou after update na tabela de clientes que possam estar executando desnecessariamente?

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Opa, desculpe o meu banco é o Firebird, infelizmente preciso usar todo o cadastro do clientes, infelizmente pois ele usa isso pra usar um parâmetro de bloqueio. Não possuo índice no campo de codcli na tabela de contas a receber e o campo de código na tabela de clientes é o campo de chave primária.

  • Moderadores
Postado
21 minutos atrás, Élviro Cavalcanti disse:

Não possuo índice no campo de codcli na tabela de contas a receber

Recomendo a criação de uma chave estrangeira nessa coluna, o FB já cria o índice automaticamente.

Sem o índice, ele precisa ler todos os 100.000 registros, 50.000 vezes... um for select linha a linha na tabela de contas a receber seria mais rápido.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Consultores
Postado
Em 19/04/2018 at 16:12, BigWings disse:

Recomendo a criação de uma chave estrangeira nessa coluna, o FB já cria o índice automaticamente

Se não for possível a criação de uma chave estrangeira (já vi casos em que isso acontece), crie o índice manualmente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 2 semanas depois ...
Postado

@Élviro Cavalcanti

Sinceramente um update desse eu acho desnecessário, pois pelo jeito ele é utilizado regularmente pendurando o banco.

Acho que o ideal é rever em que momentos essa informação de maior atraso será utilizada, caso seja em um relatório ou uma consulta, fica muito mais rápido dar o SELECT  areceber.databaixa is null  e ai calcular a informação clientes.maioratraso.

É o que eu faço no meu sistema.

 

Dercide.

 

 

  • Este tópico foi criado há 2398 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.