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 & "'"
Pergunta
thiagojpa
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
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.