none
Tratar un millón de registros con GridView RRS feed

  • Pregunta

  • Saludos comunidad, ocurre el siguiente problema, desde un procedimiento almacenado en sqlserver2000 llamo alrededor de 1 millon de registros, dicha tarea (Con muchos JOINS) se demora alrededor de 20 a 25 segundos, el punto es que cuando los retorna y los trabajo, el rellenar una clase con los resultado toma un minuto y algunos casos mas.

    El código para llenar la clase es :

                    while (conn.resultado.Read())
                    {
                        contenedores.Add(new ContenedorGateIn()
                        {
                            fechaIngreso = conn.resultado[0].ToString(),
                            unidad = conn.resultado[1].ToString(),
                            tipo = conn.resultado[2].ToString(),
                            armador = conn.resultado[3].ToString(),
                            condicion = conn.resultado[5].ToString(),
                            entradaAngamos = conn.resultado[6].ToString(),
                            fechaDrt = conn.resultado[7].ToString(),
                            drt = conn.resultado[8].ToString(),
                            numTactIngreso = conn.resultado[9].ToString(),
                            embarqueDescarga = conn.resultado[10].ToString(),
                            ingresoNaveCalle = conn.resultado[11].ToString(),
                            cliente = conn.resultado[12].ToString(),
    
    
    
                        });
                    }

    y en el cshtml tengo:

    @model  IEnumerable<ContenedoresEnDeposito.Models.ContenedorGateIn>
    @{
        ViewBag.Title = "Pagina de prueba";
        WebGrid grid = new WebGrid(ContenedoresEnDeposito.Models.ContenedorGateIn.Buscar());
    }
    
    
    @grid.GetHtml(columns: new[]
    {
        grid.Column("unidad"       , "Unidad"),
        grid.Column("fechaIngreso" , "Fecha de Ingreso"),
        grid.Column("tipo"         , "Tipo")
    })
    

    Mi duda es la siguiente, hay alguna forma de rellenar la clase mostrada en el primer código sin necesidad de utilizar un ciclo?, se puede optimizar de alguna forma ese ciclo?


    Quedo atento.

    Saludos y gracias.

    martes, 29 de septiembre de 2015 19:54

Todas las respuestas

  • hola

    >>hay alguna forma de rellenar la clase mostrada en el primer código sin necesidad de utilizar un ciclo?, se puede optimizar de alguna forma ese ciclo?

    es imposible y una locura trabajar  ese volumen de datos

    deberias proporcionar funcionalidad de paginado y filtrado de los datospara reducir la cantidad de entidades que necesitas mostrar al usuario

    recuerda que mas alla de optimizar el for toda esa infor se debe transmitir por la red y mientras mas datos mas Mb tendras que enviar y eso demora

    por eso debes reducir la cantidad de registros

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 29 de septiembre de 2015 19:57
  • En ese caso al sp le pasaré dos valores mas, la cantidad de registros por vista y la página en la que se esta viendo, que opinas de esa solución?

    Gracias me ayudaste a buscar una solución, aveces nos cegamos y no vemos las respuestas.

    Gracias nuevamente!

    martes, 29 de septiembre de 2015 20:31
  • >>la cantidad de registros por vista y la página en la que se esta viendo, que opinas de esa solución?

    perfecto, es una buena idea


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 29 de septiembre de 2015 21:12