Ir para conteúdo
Fórum Script Brasil
  • 0

Otimização de consulta


thiagojpa

Pergunta

Boa Tarde!

Gostaria de uma ajuda de vocês, tenho uma consulta que esta demorando 2 dias para terminar

Vou explicar minha situação

Tenho 3 tabelas

mai2010

id

dscr

fref

fbai

locf

aisp

fmun

circ

Fbai

id

fbai_erro

fbai_correto

fref

aisp

circ

fmun

Locf

id

locf_erro

locf_correto

fref

circ

fmun

as tabelas fbai e locf servem como dicionarios e estão sempre aumentando

hoje fbai tem 20 mil registros e locf 50 mil registros

A consulta

crio uma nova tabela (mai2010_final), pego a tabela maio2010 e percorro ela toda inserindo dados dela na tabela mai2010_final e inserindo a correção que vem dos dicionarios.

então a tabela mai2010_final tem

id

dscr

fref

fbai

fbai_correto

locf

locf_correto

aisp

fmun

circ

ah esqueci, mai2010 175 mil registros.

Queria saber se existe uma maneira de otimizar isso

O codigo

sqltabela = "SELECT * FROM mai2010;"

set Rstabela = dbConn.execute(sqltabela)

Do while not Rstabela.eof

LocfBase = UCase(Rstabela("LOCF"))

circ = Rstabela("CIRC")

FBAIBase = UCase(RsTabela("FBAI"))

FREFBase = RsTabela("FREF")

AISPBase = RsTabela("AISP")

FMUNBase = Rstabela("FMUN")

if LocfBase = "<<ENDEREÇO NÃO LOCALIZADO>>" then <- AQUI TEM 300 COMPARAÇÔES, QUERO INSERIR UM CAMPO NA TABELA MAI2010 COLOCANDO 1 OU 0, SERA QUE MELHORA A CONSULTA

Sql2 = "SELECT * FROM LOCF WHERE LOCF_ERRO = '" & LocfBase & "' AND circ = " & circ &" AND FREF ='" & FREFBase & "';"

else

Sql2 = "SELECT * FROM LOCF WHERE LOCF_ERRO = '" & LocfBase & "' "

end if

Sql4 = "SELECT * FROM FBAI WHERE FBAI_ERRO = '" & FBAIBase & "'"

Set Rs2 = dbConn.execute(Sql2)

sql12= "INSERT INTO MAI2010_FINAL values (" & Rstabela("ID") & ",'" & Rstabela("AISP") & "','" & Rstabela("DSCR") & "','" & Rstabela("LOCF") & "','" & replace(Rs2("LOCF_CORRETO"),"'","\'") & "','" & Rstabela("FNUM") & "','" & Rstabela("FREF") & "','" & Rstabela("FBAI") & "','" & Rstabela("FBAI") & "','" & Rstabela("FMUN") & "',," & Rstabela("CIRC") & ")"

set teste = dbConn.Execute(sql12)

if FBAIBase = "NÃO INFORMADO" then

SqlFBAI2 = "SELECT * FROM FBAI WHERE FBAI_ERRO = '" & FBAIBase & "' AND FMUN = '" & FMUNBase & "' AND AISP = '"& AISPBase& "' AND FREF = '"& FREFBase &"'"

else

SqlFBAI2 = "SELECT * FROM FBAI WHERE FBAI_ERRO = '" & FBAIBase & "' AND FMUN = '" & FMUNBase & "' "

end if

Set RsFBAI2 = dbConn.execute(SqlFBAI2)

Sqql= "UPDATE MAI2010_FINAL SET FBAIX = '" &RsFBAI2("FBAI") & "' WHERE FBAI = '" & FBAIBase & "' AND FMUN = '" & FMUNBase & "'"

set rs = dbconn.execute(sqql)

Rstabela.Movenext

loop

Rstabela.close

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...