Jump to content

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

Recommended Posts

Posted

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
Posted
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

 

 

Posted

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
Posted
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.

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

Projeto ACBr

 

 

  • Consultores
Posted
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 weeks later...
Posted

@É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á 2482 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...