USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Como melhorar essa query sql, está mto lenta
mamonalta
Pontos: 2843
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 16/03/2007 16:46 hs         

Seguinte, tenho a tabela Assistencia com o numero da assistencia

depois tenho a tabela Assist_retorno para os retornos de assistencia...
gostaria de saber como melhorar essa retina ai de baixo?

 

abraços

 

Dim var_15 As Date, var_Eliminado As Integer
    Set RsSql = New ADODB.Recordset
    Set RsSql_novo = New ADODB.Recordset
    lst1.Visible = False
    lst1.Clear
    var_15 = Date - 7
    var_15 = Format(var_15, "MM/DD/YYYY")
    Sql = "Select Ret_Assist from Assist_Retornos WHERE Ret_Data_Atendimento = #" & var_15 & "# and ret_data_enc is null "
    RsSql.Open Sql, Conexao, adOpenDynamic, adLockOptimistic 'buscando no banco.
        Do Until RsSql.EOF
            Sql = "SELECT * From Assist_tecnica " & _
                  "WHERE Assist_Numero =" & RsSql!Ret_Assist & " and Assist_Status = 2"
            RsSql_novo.Open Sql, Conexao, adOpenDynamic, adLockOptimistic 'buscando no banco.
            If RsSql_novo.EOF = False Then
                lst1.AddItem (RsSql_novo!Assist_Numero)
                lst1.ItemData(lst1.NewIndex) = RsSql!Ret_Assist
            Else
                var_Eliminado = var_Eliminado + 1
            End If
            RsSql_novo.Close
            RsSql.MoveNext
        Loop
    Sql = Empty
    Label1.Caption = RsSql.RecordCount - var_Eliminado
    Label1.Visible = True
    RsSql.Close
    Set RsSql = Nothing
    lst1.Visible = True

 
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 18/03/2007 22:26 hs            
Bom, está lento pois a cada passagem do registro vc faz uma consulta. Tenta usar um join:
 
...
 
SQL = "SELECT ASSIST_TECNICA.* FROM ASSIST_TECNICA INNER JOIN ASSIST_RETORNOS ON ASSIST_TECNICA.ASSIST_NUMERO = ASSIST_RETORNOS.RET_ASSIST WHERE ASSIST_RETORNOS.Ret_Data_Atendimento = #" & var_15 & "# and ASSIST_RETORNOS.ret_data_enc is null AND ASSIST_TECNICA.Assist_Status = 2"
 
RsSql.Open Sql, Conexao, adOpenDynamic, adLockOptimistic 'buscando no banco.
Do Until RsSql.EOF
  lst1.AddItem (RsSql_novo!Assist_Numero)
  lst1.ItemData(lst1.NewIndex) = RsSql!Assist_Numero
  RsSql.MoveNext
Loop
 
*****************************************************
Pelo q notei vc tb faz um controle dos registros q não estão nas 2 tabelas...
Então vc faz mais uma SQL:
 
Sql = "SELECT COUNT(ASSIST_TECNICA.*) FROM ASSIST_TECNICA WHERE Assist_Status = 2 AND ASSIST_TECNICA.ASSIST_NUMERO NOT IN(SELECT RET_ASSIST FROM ASSIST_RETORNOS WHERE Ret_Data_Atendimento = #" & var_15 & "# and ret_data_enc is null)"
RsSql_novo.Open Sql, Conexao, adOpenDynamic, adLockOptimistic 'buscando no banco.
IF NOT RSSQL_NOVO.EOF THEN
  var_Eliminado = RSSQL_NOVO(0)
ENDIF
 
Sql = ""
Label1.Caption = RsSql.RecordCount - var_Eliminado
Label1.Visible = True
RsSql.Close
Rssql_novo.close
Set RsSql = Nothing
Set RsSql_Novo = Nothing
lst1.Visible = True
 
 
Em vez de várias SQL's vc só faz 2 o q economiza um processamento legal ae.
 
Qq coisa é só postar
 
at+
   
mamonalta
Pontos: 2843
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 18/03/2007 22:29 hs         
gost se tem msn? assim posso te passar certinho o q faço para ver se tem como melhorar + coisas.
 
valeu pela dica :>
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 19/03/2007 11:36 hs            
Opa colega! blz? Eu até tenho mas tô no serviço e aqui não tem como ajudá-lo pois não tenho vb e o msn aqui é meio restrito. Vc pode escrever aqui no fórum ou se for muitos detalhes pode enviar suas dúvidas pro meu e-mail. Como no momento não estou em cliente fique à vontade.
 
at+
   
mamonalta
Pontos: 2843
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 20/03/2007 17:39 hs         
ghost_jlp

na segunda sql q vc me passou dá um erro ai eu tiro o count
e funfa...
mas o resultado não é correto...
dá 11 mil e alguma coisa...
aquela sql é só pra ver qual assistencia está no retorno mas na tab assistencia está com o estatus diferente de 2
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 21/03/2007 00:43 hs            
Olá colega...
Qual o erro da SQL q eu passei?
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página