Cita:
Empezado por joanajj
La base a ido creciendo y tiene como unos 8 o 9000...
...se me ocurrió pulsar la tecla Fin para posicionarme en el último registro y tardó como 5 minutos en hacerlo
|
Está claro que Access es una Base de Datos de escritorio, y no se puede pretender usarla en proyectos profesionales, pero lo que no es normal es que el recorrido de una tabla de 8000 registros tarde 5 minutos. Ahí hay algo mal.
En Delphi, trabajando con un fichero MDB y accediendolo con ADO, yo he trabajado con volúmenes mucho superiores a ese y funciona perfectamente.
Cita:
Empezado por joanajj
...usando alguna base de datos alternativa se puede mejorar
|
Coincido en lo que han dicho, no todo se arregla diciendo "Cambia a FireBird/SQLServer que son Bases de Datos en Serio". Como te he comentado, no son normales esos tiempos, lo que significa que el problema no está en la Base de Datos.
Recorrer una tabla de Access con 30000 registros debe hacerse casi de forma inmediata y el locate igual.
¿Puedes poner algo de código del que estás utilizando? ¿Dar más detalles?
Cita:
Empezado por amadis
(1) ...ese comportamiento es normal de access trabajado desde delphi.
(2) ...Según había leido es como una traba para que los programadores no usen access desde lenguajes ajenos a microsoft.
(3) ...Podrias migrar el access a Paradox.
|
(1) En absoluto es un comportamiento normal. los Ficheros MDB de Jet4 (no confundir con Access que es un programa propietario para tratarlos) funcionan bien en local (al igual que lo puede hacer Paradox) siempre y cuando se usen correctamente y "no se les pida más de lo que son" (una Base de Datos de escritorio).
(2) No hay ninguna traba en utilizar Delphi+ADO+MDB; Es más, creo que a MS le debe interesar que mucha gente use sus ficheros MDB; Significa que algunos de éstos acabarán utilizado/comprando Access (propiedad de MS).
(3) Migrar una Base de Datos MDB+ADO a Paradox+BDE es como "dejar de comer Pan para comer tortas"; Dudo mucho que obtengas más rendimiento; Es más estoy casi seguro de que accediendo a MDB con ADO (acceso nativo) se obtiene más rendimiento que accediendo a Paradox a través del BDE; Aunque en definitiva son opciones muy similares; Si vas a cambiar, debes hacerlo a un SGBD (sigo pensando que no siempre todo se arregla así).
Antes de hacer cambios, yo revisaría:
(1) Cómo tienes definda la estructura de la Base de Datos. Sobre todo claves primarias, claves foráneas e índices sobre las tablas.
(2) Actualizate las MDAC a alguna de las últimas versiones.
(3) Repara y compacta la Base de Datos para asegurarte de que no tiene problemas. Si tienes dudas, crea un Base de Datos en balnco e importa la anterior.
(4) Revisa que tengas bien configurada la conexión en el ADOTable/ADOConection (usando
Jet4)
(5) Revisa las propiedades CursorType de la conexión y del ADOTable.
(6) ¿Estás trabajando en Red? Si es así revisa que no tengas problemas de Red. Como te he dicho esos tiempos "denotan claramente" un problema (no son achacables a Access).
(7) Piensa en usar SQL para búsquedas en lugar de Locate. Revisa campos sobre los que usas locate para añadir índices.
Todo depende de qué tipo de proyecto estés haciendo:
* Local o en Red
* Monopuesto o Multipuesto
* Volumen de Datos/Tablas
* ...
Tal vez con más datos y algo de código te podamos ayudar más...
Un saludo