![]() |
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 |
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 |
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 |
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 |
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. |
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..
|
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 13:24:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi