Jump to content

dev botao

Ajuda com SQL


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

Recommended Posts

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?

Link to comment
Share on other sites

  • Moderadores
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

 

 

Link to comment
Share on other sites

  • Moderadores
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

 

 

Link to comment
Share on other sites

  • Consultores
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.
Link to comment
Share on other sites

  • 2 weeks later...

@É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.

 

 

Link to comment
Share on other sites

  • Este tópico foi criado há 2329 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.