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)
-   -   Append en tabla con mas de 100,000 registros (https://www.clubdelphi.com/foros/showthread.php?t=66714)

ivantech 09-03-2010 05:01:37

Append en tabla con mas de 100,000 registros
 
saludos

necesito saber que mecanismo a tomar en consideración para hacer un Append en tablas que pueden superar en corto tiempo los 100,000 registros. estoy consciente que es engorroso hacer append con estas cantidades de informaciones pero me gustaría saber o que me haga sugerencias de como hacer un insert o append optimo y rápido ya con estas cantidades de registros. utilizo delphi 7 + ODBC + Firebird 2.5 para capturar las informaciones, estoy sujeto a cualquier tipo de sugerencia.

roman 09-03-2010 05:33:30

Igual que si la tabla tuviera cinco registros o un millón:

Código SQL [-]
insert into tabla
column1, column2,...
values
(value1, value2,...)

En otras palabra, usa sentencias SQL de inserción, no uses componentes de tipo Table.

// Saludos

ivantech 09-03-2010 11:55:07

si pero valla, sabes que si la tabla tiene un crecimiento de unos pocos registro mensuales y para llegar a una cantidad de 20,000 tardaría meses, no seria necesario complicarse mucho con un insert basado en SQL. pero ahora si es una aplicación de recogida de datos a nivel territorial de un país, valla creo que el Append seria un problema y pensé que existía alguna forma de optimizar el recorrido que hace el append o insert en toda la tabla. pero esta bien tendré que utilizar sentencias SQL lo único que seria un problemin para mi ya que no podría utilizar los componentes de enlace con los campos (TDbCombos, TDbLookup, TDbEdit, etc). nada tendré que re formular toda la aplicación para utilizarlo de esta forma.


muchas gracias roman por tu sabia respuesta.

Neftali [Germán.Estévez] 09-03-2010 12:59:16

Cita:

Empezado por ivantech (Mensaje 356149)
...y pensé que existía alguna forma de optimizar el recorrido que hace el append o insert en toda la tabla.

Que yo sepa las inserciones con SQL no hacen ningun recorrido por la tabla, por lo que no se que opcimización quieres realizar.


Cita:

Empezado por ivantech (Mensaje 356149)
...lo único que seria un problemin para mi ya que no podría utilizar los componentes de enlace con los campos (TDbCombos, TDbLookup, TDbEdit, etc). nada tendré que re formular toda la aplicación para utilizarlo de esta forma.

Puedes utilizar componentes DataAware con tablas grandes, lo único que debes hacer es no conectarlos A TODA LA TABLA.

Es decir, puedes hacer un:

Código SQL [-]
  SELECT TOP 1000 * FROM TABLA1

Y mostrar eso en un DBGrid o en componentes como los que comentas sin problemas; Lo que no debes hacer es conectar esos componentes a un origen de datos que te devuelva muchos registros. Para eso están los TOP, los FILTROS,... Vigila sobre todo los índices que utilizas y revisa sobre el trabajo con cursores en la parte cliente y en la parte servidor.

rgstuamigo 09-03-2010 15:40:03

Otra forma de evitar ir hasta el final sería hacer una ordenación Descendente de los registro (...Order by Campo Desc ) y ahí hacer la inserción del nuevo registro..
Por otro lado Delphi tiene un Magnífico componente que optimiza el trabajo en lo que se refiere a mostrar ,editar,modificar los registros..., estoy hablando del componente ClientDataSet, en éste hilo puedes ver más información.
Saludos...


La franja horaria es GMT +2. Ahora son las 01:13:24.

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