Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Mucho retardo de Locate leyendo DB2 de un AS400 (https://www.clubdelphi.com/foros/showthread.php?t=19885)

Javier_A 30-03-2005 13:19:58

Mucho retardo de Locate leyendo DB2 de un AS400
 
Hola a tod@s,
Pues resulta que estoy terminando un programa que trabaja con datos de una tabla DB2 en un AS400 que tiene cerca de 1 millon de registros.
Utilizo componentes ADO ( ADOTABLE ), para abrir dicha tabla; y aquí el primer retardo que ocasiona: cada vez que abre la tabla tarda 2 minutos, pero lo mas curioso es que, una vez abierta, intento acceder a un registro por medio de la instruccion adotable1.locate.etc.. y la primera busqueda emplea otra vez casi 2 minutos y las siguientes 5 segundos aprox.
¿ conoceis algun medio de acceso mas rapido, tanto como para abrir la tabla con para acceder a sus registros ?
A ver si me podeis echar un cable

Gracias y saludos

ASAPLTDA 30-03-2005 15:39:07

dEMORA
 
Amigo trabajo delphi y as400 pero nunca he tenido la oportunidad de hacerlo juntos ha ver si te sirve estos comentarios
1. la coneccion al as400 es independiente de la consulta ?
2. cuantos registros llevas a la tabla o esta filtrada en el select?
3. la tabla del as400 es tabla o es un archivo(DDS)
4. si es DDS usar el logico que contenga el indice la llave

? Por favor nos indicas la version de as400 y la version del delphi

Raptor 30-03-2005 20:37:29

hola chicos..

Amigo porque usas ADOTABLE eso es una pela cada componente ADOTABLE , TABLE etc. abren el millon de registro que tu tienes en la tabla. usa AdoQuery

Nunca eh trabajado en AS400 pero si tu puedes usar ADOTABLE cambialo por AdoQuery, a otra cosas tus tablas deben de tener indices para que tus consultas sea mas rapida. Olvidate de la se Sentencia Locate esto realiza una busqueda secuencial. :D

Suerte

Ryu 01-04-2005 22:53:00

espero q te resuelva el problema
 
lo primero es que tu no puedes usar un adotable para hacer una consulta as400
pues como te lo escribieron trae todas las tablas lo mejor es que use Sql para consultar los datos si eso es lo que quieres.
con el Tadoquery si lo activas despues de la consulta te traera los datos mas rapido pues solo te traera los datos consultados.

----------Ryu----------
El que se cree sabio solo es sabio para si mismo
----------------------------------------REP. Dom

jachguate 01-04-2005 23:19:29

Un principio general de la programación Cliente servidor, es jamás hacer viajar al cliente mas información de la que realmente necesita.

No creo que DB2 tenga problemas para buscar un registro en una tabla grande, dado que se basa en índices... y pues es recomendable cada vez trasladar solo un puñado de estos registros al cliente (no mas de unos cuantos cientos en el peor de los casos).

No tiene sentido hacer viajar al cliente millones de registros simplemente para permitir que este satisfaga la curiosidad de "ver" muchos datos... es algo que va en contra de la razón.

Mejor que el usuario introduzca primero su criterio de búsqueda, o de alguna forma identifique el/los registros que le interesan (por ejemplo los del día de hoy, o los del cliente x, del mes y). Luego, en base a esto lanzá un select contra la base de datos y verás que bien va.

Saludos.

Delfino 02-04-2005 22:57:19

Me pregunto, y seguro q muchos tb, pq no usas DBExpress, ADO ha sido y es el motor de connectividad con Delphi mas lento q hay, mucho mas q el mismo BDE..

Javier_A 05-04-2005 13:37:35

gracias a todos, la verdad es que con sqls va infinitamente mejor, el utilizar DBexpress, lo tengo que mirar, ( no las he utilizado nunca).

Saludos


La franja horaria es GMT +2. Ahora son las 15:58:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi