Delphi - SOLO EXPERTOS.VELOCIDAD

 
Vista:

SOLO EXPERTOS.VELOCIDAD

Publicado por Luis (1 intervención) el 12/12/2001 12:08:08
Yo tenia una aplicacion que usaba una base de datos Access y utilizaba
los TTable,TQuery ... Pero me aconsejaron que utilizara otra base de datos mas potente,más rapida,fiable... ,me recomendaron mucho SQL Server 2000, por lo que cambie a SQL Server 2000, y tube que pasar todo a ADO y utilizar el AdoConection, TAdoTable,TAdoQuery ....
Despues de todo esto y pasar todos los datos a SQL Server 2000 e comprobado que me va bastante más lento que antes.
Si se supone que SQL Server 2000 es más rápida. ¿Porque no lo es?
¿He echo algo mal? ¿Fe faltaría algo?
Nota: Tengo el Delphi 5, me solucionaria algo el Delphi 6.
Por favor Ayuda no se que hacer para ganar velocidad. Ya que tengo un ordenador potente (Pentium 1.333 con 256 Mb de Ram)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SOLO EXPERTOS.VELOCIDAD

Publicado por mamcx (6 intervenciones) el 14/12/2001 15:00:45
Sql Server 20000 es mas rapido que Acces... Mil veces. El problema normalmente no tiene que ver con ADO sino con el estilo de programacion.

he aqui algunos puntos básicos de velocidad:

Mejorando ADO:

1- Usa Cursortype=FowardOnly si solo necesitas llenar listas, combos, etc... y no necesitas actualizar ni navegar hacia atras en el recordset.
2- LockType=ReadOnly para los informes (que no requieren actualizar)
3-LockType=Optimistic o BatchOptimistic y CursorType=Static para modificar datos.

Sin embargo, el lio es con la metodologia de programacion. Con una base de datos como Sql debes pensar en desarrollos cliente/servidor. Imagina que el servidor esta en OTRO equipo, que debe ser accesado por muchos usuarios, y que todo debe ir RAPIDO.

1- No uses TADOTable con Sql Server. Cambio por query o DataSet (DataSet mejor)

2- Selecciona solo los datos que se necesitan. Esto es, debes olvidar la idea de que trabajas con tablas locales. Si tienes una lista de 1000 clientes, no pongas SELECT * FROM Clientes, (aunque a veces sera necesario) es mejor especificar que campos vas a necesitar (por ejemplo, para un combo tal vez solo necesites los nombres y el id) y filtra los datos tanto como sea posible.

3- Desconectate. Es mala idea estar conectado todo el tiempo a una base de datos SQL. El flujo de trabajo tipico es:

a- Concectarse a la BD (Connection.Open)
b- Ejecutar la consulta o consultas (DataSer.Open)
Si se van a editar los datos, usa BatchOptimistic
c- Desconectarse de la BD
d- Actualizar datos
e- Conectarse
f- Actualizar contra el servidsor (updateBatch)
g- Procesar errores (si los hay)

Un poco complicado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar