![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
300.000 registros
Firebird 2.1 y Delphi 2006
Buenas Tardes, haber tengo un problema serio, tengo una tabla con firebird con 300.000 de registros, estos los cargo en un clientdataset, la consulta es simple SELECT ID,codigo1,codigo2 FROM TTabla ORDER BY codigo1,codigo2 pero claro tarda bastante , hay algun manera de optimizar de alguna forma cursores, etc... Saludos. |
#2
|
||||
|
||||
ah..
los campos que devuelvo estan indexados. (id,campo1,campo2)
|
#3
|
||||
|
||||
Hola, es lógico que te tarde ya que muestras todos los registros de un sólo golpe, con un where la consulta se hace un poco más rápido, mi consejo para esos casos sería usando un procedimiento almacenado o mostrar una barra de progreso mientras se carga, ojalá otro colega te ayude con algo más optimizado.
Saludos.
__________________
![]() Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#4
|
||||
|
||||
Hola raorre, la solucion es muy simple, ya que estas utilizando un TClientDataSet solo debes buscar la propiedad PacketRecords y pponer una cantidad X, la cantidad X significa que solo cargará X registros cada vez que que le solicite el dataSource, me explico, si colocas packetRecords en 1000, en un DBGrid se mostraran 1000 registros, solo que al llegar al registro 1000 automaticamente cargará otros 1000 registros y así hasta terminar de cargarlos todos.
__________________
mas confundido que Garavito el día del Niño. |
#5
|
||||
|
||||
..
Correcto, pero no me vale porque el usuario puede pulsar el boton de ir al final de los registros y entonces me carga todos los 300.000
Lo he probado para q me cargar de 300 en 300 y va bien pero cuando le das al bton de al final te lo cargo todo saludos |
#6
|
||||
|
||||
![]() Saludos.
No especificas si lo quieres es realizar una pantalla para ejecutar búsquedas en tu aplicación. Siendo así el caso, esa metodología que deseas aplicar no es recomendable para ambiente Cliente/Servidor; donde tienes una PC (Servidor) con la Base de Datos que te envía la data a través de la red hasta otra PC (Cliente). Imagina el trafico de red que estarías generando enviando ese paquete de información aunque estés usando TClientDataSet. En mi opinión personal, un usuario no necesita navegar por 300,000 registros para encontrar uno especifico se supone que ya sabe de antemano cual registro necesita (o tiene una idea) lo que no sabe es donde esta localizado dentro de la tabla. Partiendo de este pensamiento debes de suministrarle al usuario la forma de buscar e incluso tú por dentro limitar la cantidad de registro que vas a mostrar; en caso de que no este dentro de ese grupo de registro que el usuario sea más especifico. Ejemplo:
En mi entorno de trabajo esta es la metodología que aplicamos y hasta ahora nos a funcionado bien. Espero no haberte cansado con esta explicación.
__________________
Gracias, Rolphy Reyes |
#7
|
||||
|
||||
Cita:
Cita:
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#8
|
||||
|
||||
Cita:
Saludos. |
#9
|
|||
|
|||
Cita:
La solucion de PacketRecords es la adecuada y existe tb en el componente TIBDataset llamada BufferChunks.. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Arreglo de Registros, con arreglos de Registros(Dinamico) | PiornoCKA&G | Varios | 4 | 05-01-2007 08:53:30 |
Actualizar Registros | drkvergil | Firebird e Interbase | 3 | 12-09-2006 18:33:54 |
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql | Arturo | MySQL | 3 | 05-09-2006 18:39:37 |
20,000 registros | ABDIGAR | SQL | 8 | 27-06-2005 19:19:58 |
registros que no se ven en ado | joanajj | Conexión con bases de datos | 5 | 08-04-2005 22:02:54 |
![]() |
|