locked
melhorando a performace RRS feed

  • Pergunta

  • Bom Dia
    Minha aplicação traz dados de um BD Mysql. Porem, tenho notado que se o banco de dados é muito extenso ele demora muito a trazer od dados. Na opinião de vcs como melhorar meu codigo para que a performace melhore??
    Obrigado

           Dim CONEXAO As String
            Dim DBariel As MySqlConnection = Nothing
            Dim TBconsulta As MySqlCommand
            Dim ADAPTADOR As MySqlDataReader
            Dim SQLSTR_CONSULTA As String = String.Empty
            Dim LISTA As New List(Of LISTA_BASICA)
    
            Try
                CONEXAO = ConnectionStrings("MyCon").ConnectionString
                DBariel = New MySqlConnection(CONEXAO)
    
                SQLSTR_CONSULTA = "Select CODIGO,DESCRICAO from PRODUTOS Order By DESCRICAO"
    
                TBconsulta = New MySqlCommand(SQLSTR_CONSULTA, DBariel)
    
                DBariel.Open()
                ADAPTADOR = TBconsulta.ExecuteReader
    
    
                LISTA = New List(Of LISTA_BASICA)
                While ADAPTADOR.Read
                    LISTA.Add(New LISTA_BASICA With {.CODIGO = Convert.ToInt32(ADAPTADOR("CODIGO")), .NOME = Convert.ToString(ADAPTADOR("DESCRICAO"))})
                End While
    terça-feira, 29 de setembro de 2009 12:10

Respostas

  • Acho que você postou essa pergunta na categoria errada, já que não está relacionada a Silverlight. De qualquer forma aqui vão algumas dicas:

    1 - Não traga a tabela toda de uma vez a não ser que você realmente precise. Use paginação e faça a query retornar apenas a quantidade de dados que você precisa (eu não sei como isso seria feito em mysql mas se você quiser eu posso postar depois como fazer isso em SQL Server).
    2 - Utilizar o DataReader pelo nome das colunas não é a melhor opção do ponto de vista de performance. Se você não tem uma quantidade de dados muito grande isso não causa impacto mas se for continuar retornando muitos dados é aconselhável buscar as colunas pela posição (0, 1....). Como você tem controle sobre como a query é escrita, isso não é problema já que você tem como garantir a ordem das colunas.
    3 - Utilizar o Convert também acarreta em perda de performance e é desnecessário quando estamos trabalhando com DataReader. No seu caso você pode utilizar os métodos GetInt32 e GetString do próprio DataReader pois eles devolverão o valor que está armazenado nativamente, sem a necessidade de fazer a conversão.

    Sua linha de código de leitura do DataReader ficaria assim:

    LISTA.Add(New LISTA_BASICA With {.CODIGO = ADAPTADOR.GetInt32(0), .NOME = ADAPTADOR.GetString(1)})

    Atenciosamente,
    Kelps Leite de Sousa
    blog: http://kelps-sousa.blogspot.com
    twitter : http://twitter.com/kelps

    Não se esqueça de "marcar como resposta" o ítem que lhe ajudou.
    • Marcado como Resposta Daniel Ferreira terça-feira, 13 de julho de 2010 18:09
    terça-feira, 29 de setembro de 2009 13:06