Velocidad leyendo datos

24/03/2008 - 19:24 por Eduardo | Informe spam
Hola a todos
Estoy haciendo una prueba con visual studio 2005 y visual studio 2008,
Esta consiste en leer una tabla con 700.000 registros, de la estructura
de la tabla que contiene una cuarenta columnas solo selecciono la 6 que
me interesan
Monto un GridView tanto VS2005 y VS2008 usando el SQLConnection un
Dataset de la Tabla y un DataAdpater todo esto sin escribir una linea
de código, La BD es SQL Server 2005 Standar y la verdad es que tarda en
cargar el DataGrid unos 2 minutos
Hecho esto con otro producto atacando a la misma base de datos y en las
mismas condiciones el llenado del DaTaGrid es practicamente instantaneo
Estoy haciendo algo mal ? o hay algo que me he dejado de hacer pues con
estos tiempos de respuesta me esimposible presentar algo en VS2005 o VS
2008.
Aclaración es trabajando con una aplicacion en Windows
Gracias anticipadas por vuestra ayuda
Eduardo

Eduardo
eduardo@brainland.net

Preguntas similare

Leer las respuestas

#1 Jesús López
24/03/2008 - 19:37 | Informe spam
Que si estás haciendo algo mal, la respuesta es sí: cargar 700.000 registros
en un dataset y mostrarlos en un datagrid es lo peor de lo peor en cuanto a
prácticas de programación se refiere.

Dices que lo estás comparando con otro producto. Pero no das detalles, por
lo que intuyo que la comparación no es justa. ¿Quizá el otro producto está
usando cursores de servidor?

En el Summit del año pasado de la empresa en que trabajo, hice una
demostración de "carga virtual" de un millón doscientos mil registros en un
datagridview que iba como un rayo. Pero claro, yo no cargaba más de 400
registros cada vez utilizando una paginación muy eficiente y trabajando con
el datagridview en modo virtual. La sensación del usuario era que tenía en
el datagridview el millón y pico de registros.

Saludos:

Jesús López
www.solidq.com



"Eduardo" escribió en el mensaje
news:
Hola a todos
Estoy haciendo una prueba con visual studio 2005 y visual studio 2008,
Esta consiste en leer una tabla con 700.000 registros, de la estructura de
la tabla que contiene una cuarenta columnas solo selecciono la 6 que me
interesan
Monto un GridView tanto VS2005 y VS2008 usando el SQLConnection un Dataset
de la Tabla y un DataAdpater todo esto sin escribir una linea de código,
La BD es SQL Server 2005 Standar y la verdad es que tarda en cargar el
DataGrid unos 2 minutos
Hecho esto con otro producto atacando a la misma base de datos y en las
mismas condiciones el llenado del DaTaGrid es practicamente instantaneo
Estoy haciendo algo mal ? o hay algo que me he dejado de hacer pues con
estos tiempos de respuesta me esimposible presentar algo en VS2005 o VS
2008.
Aclaración es trabajando con una aplicacion en Windows
Gracias anticipadas por vuestra ayuda
Eduardo

Eduardo



Respuesta Responder a este mensaje
#2 Alberto Poblacion
24/03/2008 - 19:48 | Informe spam
"Eduardo" wrote in message
news:
Estoy haciendo una prueba con visual studio 2005 y visual studio 2008,
Esta consiste en leer una tabla con 700.000 registros, de la estructura de
la tabla que contiene una cuarenta columnas solo selecciono la 6 que me
interesan
Monto un GridView tanto VS2005 y VS2008 usando el SQLConnection un Dataset
de la Tabla y un DataAdpater todo esto sin escribir una linea de código,
La BD es SQL Server 2005 Standar y la verdad es que tarda en cargar el
DataGrid unos 2 minutos
Hecho esto con otro producto atacando a la misma base de datos y en las
mismas condiciones el llenado del DaTaGrid es practicamente instantaneo
Estoy haciendo algo mal ? o hay algo que me he dejado de hacer pues con
estos tiempos de respuesta me esimposible presentar algo en VS2005 o VS
2008.
Aclaración es trabajando con una aplicacion en Windows



Es una barbaridad cargar 700.000 registros en un DataSet y luego pasarlos
a un DataGrid. Entre otras cosas, esto carga los datos dos veces en memoria,
y con 700.000 registros, esos son muchos datos.
Si no tienes más remedio que hacerlo con las herramientas "standard", al
menos usa un DataReader en lugar de un DataSet+DataAdapter, y pasa los datos
directamente del DataReader al GridView. De esta forma, los datos solo se
cargan en memoria una sola vez (dentro del GridView) en lugar de dos.
Pero la forma en que trabajan los productos que hacen esta operación de
forma eficiente, consiste en traer solamente desde la base de datos un
bloque de registros centrado alrededor de la parte que está visible en el
grid, y cuando se hace "scroll" en pantalla, van trayendo los rangos de
registros que se necesitan. De esta forma, nunca "bombean" desde el servidor
(ni guardan en memoria) nada más que un número moderado de registros, pero
no cientos de miles.
Respuesta Responder a este mensaje
#3 Jose Guzman
24/03/2008 - 20:03 | Informe spam
Por cierto, no tendras esa clase por ahi? para compartir con tus "colegas"
;-)


"Jesús López" wrote in message
news:
Que si estás haciendo algo mal, la respuesta es sí: cargar 700.000
registros en un dataset y mostrarlos en un datagrid es lo peor de lo peor
en cuanto a prácticas de programación se refiere.

Dices que lo estás comparando con otro producto. Pero no das detalles, por
lo que intuyo que la comparación no es justa. ¿Quizá el otro producto está
usando cursores de servidor?

En el Summit del año pasado de la empresa en que trabajo, hice una
demostración de "carga virtual" de un millón doscientos mil registros en
un datagridview que iba como un rayo. Pero claro, yo no cargaba más de 400
registros cada vez utilizando una paginación muy eficiente y trabajando
con el datagridview en modo virtual. La sensación del usuario era que
tenía en el datagridview el millón y pico de registros.

Saludos:

Jesús López
www.solidq.com



"Eduardo" escribió en el mensaje
news:
Hola a todos
Estoy haciendo una prueba con visual studio 2005 y visual studio 2008,
Esta consiste en leer una tabla con 700.000 registros, de la estructura
de la tabla que contiene una cuarenta columnas solo selecciono la 6 que
me interesan
Monto un GridView tanto VS2005 y VS2008 usando el SQLConnection un
Dataset de la Tabla y un DataAdpater todo esto sin escribir una linea de
código, La BD es SQL Server 2005 Standar y la verdad es que tarda en
cargar el DataGrid unos 2 minutos
Hecho esto con otro producto atacando a la misma base de datos y en las
mismas condiciones el llenado del DaTaGrid es practicamente instantaneo
Estoy haciendo algo mal ? o hay algo que me he dejado de hacer pues con
estos tiempos de respuesta me esimposible presentar algo en VS2005 o VS
2008.
Aclaración es trabajando con una aplicacion en Windows
Gracias anticipadas por vuestra ayuda
Eduardo

Eduardo







Respuesta Responder a este mensaje
#4 Jesús López
24/03/2008 - 20:11 | Informe spam
Claro que la tengo ;-),

Escríbeme a JLopez esto es para engañar a los smpamers @ esto también
SolidQ.com

Y te envío por correo la ppt y el código

Saludos:

Jesús López
www.solidq.com



"Jose Guzman" escribió en el mensaje
news:%
Por cierto, no tendras esa clase por ahi? para compartir con tus
"colegas" ;-)


"Jesús López" wrote in message
news:
Que si estás haciendo algo mal, la respuesta es sí: cargar 700.000
registros en un dataset y mostrarlos en un datagrid es lo peor de lo peor
en cuanto a prácticas de programación se refiere.

Dices que lo estás comparando con otro producto. Pero no das detalles,
por lo que intuyo que la comparación no es justa. ¿Quizá el otro producto
está usando cursores de servidor?

En el Summit del año pasado de la empresa en que trabajo, hice una
demostración de "carga virtual" de un millón doscientos mil registros en
un datagridview que iba como un rayo. Pero claro, yo no cargaba más de
400 registros cada vez utilizando una paginación muy eficiente y
trabajando con el datagridview en modo virtual. La sensación del usuario
era que tenía en el datagridview el millón y pico de registros.

Saludos:

Jesús López
www.solidq.com



"Eduardo" escribió en el mensaje
news:
Hola a todos
Estoy haciendo una prueba con visual studio 2005 y visual studio 2008,
Esta consiste en leer una tabla con 700.000 registros, de la estructura
de la tabla que contiene una cuarenta columnas solo selecciono la 6 que
me interesan
Monto un GridView tanto VS2005 y VS2008 usando el SQLConnection un
Dataset de la Tabla y un DataAdpater todo esto sin escribir una linea de
código, La BD es SQL Server 2005 Standar y la verdad es que tarda en
cargar el DataGrid unos 2 minutos
Hecho esto con otro producto atacando a la misma base de datos y en las
mismas condiciones el llenado del DaTaGrid es practicamente instantaneo
Estoy haciendo algo mal ? o hay algo que me he dejado de hacer pues con
estos tiempos de respuesta me esimposible presentar algo en VS2005 o VS
2008.
Aclaración es trabajando con una aplicacion en Windows
Gracias anticipadas por vuestra ayuda
Eduardo

Eduardo










Respuesta Responder a este mensaje
#5 Eduardo
24/03/2008 - 20:39 | Informe spam
Alberto Poblacion a formulé ce Monday :
"Eduardo" wrote in message
news:
Estoy haciendo una prueba con visual studio 2005 y visual studio 2008,
Esta consiste en leer una tabla con 700.000 registros, de la estructura de
la tabla que contiene una cuarenta columnas solo selecciono la 6 que me
interesan
Monto un GridView tanto VS2005 y VS2008 usando el SQLConnection un Dataset
de la Tabla y un DataAdpater todo esto sin escribir una linea de código, La
BD es SQL Server 2005 Standar y la verdad es que tarda en cargar el
DataGrid unos 2 minutos
Hecho esto con otro producto atacando a la misma base de datos y en las
mismas condiciones el llenado del DaTaGrid es practicamente instantaneo
Estoy haciendo algo mal ? o hay algo que me he dejado de hacer pues con
estos tiempos de respuesta me esimposible presentar algo en VS2005 o VS
2008.
Aclaración es trabajando con una aplicacion en Windows



Es una barbaridad cargar 700.000 registros en un DataSet y luego pasarlos
a un DataGrid. Entre otras cosas, esto carga los datos dos veces en memoria,
y con 700.000 registros, esos son muchos datos.
Si no tienes más remedio que hacerlo con las herramientas "standard", al
menos usa un DataReader en lugar de un DataSet+DataAdapter, y pasa los datos
directamente del DataReader al GridView. De esta forma, los datos solo se
cargan en memoria una sola vez (dentro del GridView) en lugar de dos.
Pero la forma en que trabajan los productos que hacen esta operación de
forma eficiente, consiste en traer solamente desde la base de datos un bloque
de registros centrado alrededor de la parte que está visible en el grid, y
cuando se hace "scroll" en pantalla, van trayendo los rangos de registros que
se necesitan. De esta forma, nunca "bombean" desde el servidor (ni guardan en
memoria) nada más que un número moderado de registros, pero no cientos de
miles.



Cuando te refieres a herramientas estandard te refieres solamente a
VS2005 o VS2008 o algun complemento, estoy intentando trabajar esta
comparacion escribiendo el minimo codigo posible. la verdad es que el
DataReader no lo he sabido encontrar en la Toolbox si lo tengo que
escribir a mano si tengo claro como hacerlo, lo que no tengo claro es
como limitar el numero de registros en el DataGrid y como montar el
Scroll en pantalla para que vaya haciendo

Gracias por tu ayuda

Eduardo

Eduardo

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida