![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
Intentar devolver 34.000 registros en una consulta para mostrarlos en un DBGrid creo que es un fallo de concepo. No tiene sentido que alguien acceda a un DBGrid con 34.000 filas. Nadie se pone a bajar con el cursor hasta encontrar la fila que necesita (imagina qie es la fila 18.345 del Grid ). Normalmente cuando se devuelve un Grid así el usuario que está delante de él intenta ordenarlo o filtrarlo para buscar lo que necesita. Ahí está la cuestión debes "acostumbrar" al usuario a que lo filtre o lo ordene antes de realizar la consulta para obtener un rango de registros más pequeño (y aun así yo pensaría en usar un TOP).Aun así los tiempos me parecen demasiado. * Ejecuta la misma consulta sin el Gris a ver lo que tarda, para descartar que sea problema de la carga. * Revisa el tipo de cursor que estás utilizando ServerSide o ClientSide. * Si la consulta tarda mucho revisa los índices y el plan de ejecución. * Usa TOP; Yo no devolvería más de 1000 o 2000 registros. * Piensa que los Grids de las DevExpress en su modo de funcionamiento estandard ("el bonito" que permite agrupar,ordenar, filtrar,...) traen todos los registros a memoria y los cargan en el Grid.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
||||
|
||||
|
No se ha dicho, pero se debe: Normaliza la Base de datos (google: "formas normales" o "normaliza tabla").
Instaladores, contactos, emails y telefonos de cada uno, todos en una tabla no hará otra cosa que estorbar y crear inconsistencias. Tampoco veo un índice por el campo activo, que se usa mucho en el where. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 24-05-2007 a las 14:17:37. |
|
#3
|
|||
|
|||
|
Yo pienso que si está filtrado los datos como se ve en su sentencia SQL
Me pregunto, los 34,000 registros cumplirán con esa condición. ![]() La otra cuestión pudiera ser el JOIN. En todo caso Lepe tiene razón al acotar sobre la normalización de la tabla. Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#4
|
||||
|
||||
|
Cita:
C.NRO, C.RAZON_SOCIAL, C.NOMBRE_COMERCIAL,C.CUIT, C.LISTA_PRECIO, C.CONDICION_VENTA, C.DIRECCION, C.NOTA, FP.DESCRIPCION AS FORMADEPAGOSeguramente si el usuario está buscando algo, podrá acotar alguno de estos antes de ejecutar la SQL.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#5
|
|||
|
|||
|
Cita:
sospecho q este puede ser el problema pq esos componentes suelen traer todos los datos de una vez, en el IBExpert se utiliza ese grid pero el modo GridMode esta para q sea virtual igual q el DBGrid de Delphi, aparte de deber o no deber traer todos esos datos, IBDataset + DBGrid se abren al instante con una tabla de mas de 100.000 registros, incluso en red, pq el IBDataset trae solo los datos establecidos en la propiedad BufferChunks y el DBGrid trae del IBDataset solo los datos q necesita mostrar en la pantalla, asi q el problema esta en otro sitio no en la cantidad.. |
|
#6
|
|||
|
|||
|
Ante todo GRACIAS, por Responder.
Si sirve de algo aclaro hasta donde pueda. para abrir la consulta en cuestion hago lo siguiente: cdsClientes.close; cdsClientes.params.ParamByName('OPCION').value := gOPCION; cdsClientes.params.ParamByName('OPCION').value := gOPCION; cdsClientes.params.ParamByName('OPCION').value := gOPCION; cdsCLientes.open; grdBase.setfocus; --- con respecto a por que dbExpress: es la forma que aplico para manejar datos. lo que si noto es que si la grilla DeVexpress trae si o si todos los registros, entonces estoy en problemas. por que tengo la aplicacion llena de esos componentes. Creo que el problema pasa por el componentes grilla. pruebo e informo. si alguien me dice alguna critica o idea mas , voy a estar muy agradecido. saludos. |
|
#7
|
|||
|
|||
|
Hola, me parece extraño lo siguiente:
Cita:
No logro entender tu lógica. pasas 3 veces el mismo parámetro y luego lo comparas con números. Habría que revisar un poco esa lógica. Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#8
|
||||
|
||||
|
Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#9
|
||||
|
||||
|
¡Hola a todos!
Cita:
Cita:
Cita:
Precisamente esas vicisitudes son las que me llevaron a buscar la paginación en segundo plano. Estoy por reanudar ese caso y aún no tengo clara la forma exacta en que lo resolveré, de hecho todavía considero la posibilidad de usar consultas TOP / FIRST o filtros Where. Os aconsejo sobremanera echarle un vistazo y les agradezco cualquier recomendación. Es prácticamene el mismo problema de Paradiso, pero visto desde una óptica optimista. ¿Podrá realizarse? Un abrazo posible. Al González. ![]() |
|
#10
|
||||
|
||||
|
Bueno Al, yo creo que la respuesta estándar a este tipo de cuestiones ya la sabes: no mandar traer 34,000 registros. Aunque al cliente le parezca necesario, la verdad es que no necesita 34,000 registros y jamás los va a revisar todos. Sin embargo, no me lo tomes a mal, pero en ese hilo que mencionas, desde un principio cancelaste la respuesta estándar:
Cita:
![]() // Saludos |
|
#11
|
||||
|
||||
|
No creas, ahorita que estaba en la ducha, me vinieron a la mente algunas reflexiones. Se me ha ocurrido traerme sólo los 100 registros con fecha de modificación, búsqueda o utilización más recientes. Y ya cuando el cliente quiera toda la tabla, digamos para exportarla a Excel, entonces darle otro mecanismo para esa operación que no interfiera con las operaciones cotidianas de la interfaz de usuario.
Creo que debo bañarme más seguido. ![]() De todas maneras sigo receptivo a sus recomendaciones y descancelo la cancelación referida. ![]() Un abrazo fresco. Al González. ![]() Edito: P.D. Y es que lo de la paginación de segundo plano, quizá no sea un terreno que deba descartarse, por lo menos para experimentación. Lograrlo podría ofrecer nuevos horizontes en materia de interfaces de usuario. Algo así como manejar una base de datos "en vivo" (pero quizá en otro momento, tal experimento sería un proyecto en sí mismo). Última edición por Al González fecha: 30-05-2007 a las 18:17:21. |
|
#12
|
||||
|
||||
|
Cita:
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..." |
|
#13
|
||||
|
||||
|
No recordaba donde habia visto esto, pero por fin di con el enlace:
Esta es una característica sumamente útil en ambientes cliente/servidor... aqui se explica como usar el DML Caching con IBObjects... para muestra, un botón...
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..." |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ¿Ayuda urgente por favor? | yarielrs | Windows | 38 | 05-05-2007 00:50:49 |
| Ayuda por favor es URGENTE | Costeño_sam | Conexión con bases de datos | 3 | 25-01-2007 10:47:24 |
| Ayuda urgente por favor | JulioGO | Varios | 2 | 05-05-2006 17:21:24 |
| Por que tarda mucho en abrir un EXE | IcebergDelphi | Varios | 5 | 16-06-2004 11:05:28 |
| ayuda urgente por favor | haffo | Varios | 2 | 01-10-2003 03:00:40 |
|