Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Faccruz

[Resolvido] Agilizar essa pesquisa

Recommended Posts

tenho essa SQL no código de um site, mas notei que ela demora um pouco para executar

 

strSQL = "Select RES.LOJA, "
        strSQL += "      RES.CIDADE, "
        strSQL += "      RES.DATAVENDA,"
        strSQL += "      SUM(CARTELAS) CARTELAS"
        strSQL += " FROM ( SELECT FIL.CODFIL LOJA,"
        strSQL += "               FIL.CIDADE,"
        strSQL += "               TO_CHAR(NRO.DATANRSORTE, 'DD/MM/YYYY') DATAVENDA,"
        strSQL += "               COUNT(NRO.NROSORTE) CARTELAS"
        strSQL += "        FROM CYBELAR_NROSORTE NRO, CAD_FILIAL FIL"
        strSQL += "        WHERE NRO.FLGUSO = 1 "
        strSQL += "          AND NRO.NOMCLI IS NOT NULL "
        strSQL += "          AND NRO.LOJA = FIL.CODFIL"
        strSQL += "          AND TO_CHAR(NRO.DATANRSORTE, 'MMYYYY') = " & ddlMeses.SelectedValue & ddlAno.SelectedValue

        If rbtnLojas.SelectedIndex = 1 Then
            strSQL += " AND NRO.LOJA = " & ddlLojas.SelectedValue
        End If

        If sLoja <> "00" Then
            strSQL += " AND NRO.LOJA = " & sLoja
        End If


        strSQL += "        GROUP BY FIL.CODFIL, FIL.CIDADE, TO_CHAR(NRO.DATANRSORTE, 'DD/MM/YYYY')"
        strSQL += " UNION ALL "
        strSQL += "        SELECT FIL.CODFIL LOJA,"
        strSQL += "               FIL.CIDADE,"
        strSQL += "               TO_CHAR(DF.DATADIFER, 'DD/MM/YYYY') DATAVENDA,"
        strSQL += "               SUM(DF.DIFERENCA) CARTELAS"
        strSQL += "               FROM CYBELAR_DIFER_NRSORTE DF, CAD_FILIAL FIL"
        strSQL += "        WHERE FIL.CODFIL = DF.LOJA"
        strSQL += "          AND TO_CHAR(DF.DATADIFER, 'MMYYYY') = " & ddlMeses.SelectedValue & ddlAno.SelectedValue

        If rbtnLojas.SelectedIndex = 1 Then
            strSQL += " AND DF.LOJA = " & ddlLojas.SelectedValue
        End If

        If sLoja <> "00" Then
            strSQL += " AND DF.LOJA = " & sLoja
        End If


        strSQL += "        GROUP BY FIL.CODFIL, FIL.CIDADE, TO_CHAR(DF.DATADIFER, 'DD/MM/YYYY')"
        strSQL += ") RES GROUP BY LOJA, CIDADE, DATAVENDA ORDER BY LOJA, DATAVENDA"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela demora só no site ou em algum gerenciador também?

 

Dica: Pesquise sobre StringBuilder, não faça concatenção de string da forma com que fez.

 

Abraços...

 

 

Obrigado!

Melhorou um pouco o desempenho (algo em torno de 4 segundos), mas ainda continua um pouco lento no lado do cliente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em relação a código fonte não tem muito mais o que fazer, só se for algo no seu driver de conexão.

Uma possível última melhoria:

Você concatenou string no seu StringBuilder ou usou o AppendFormat ?

 

Abraços...

 

 

pode encerrar

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.