Ho bisogno di migliorare le prestazioni del caricamento dei dati. L'algoritmo corrente fa un pieno di selezione da una tabella:Come migliorare le prestazioni di inserimento/aggiornamento dei dati?
select Field1, Field2,...,FieldN from Table1 order by FieldM
I nuovi dati vengono letti da un file di testo (ad esempio, la linea file di testo per riga DataTable). La tabella ha una chiave primaria, contenente due campi. Per ogni riga di un file di testo individua la riga necessaria da questi due campi (ad esempio la chiave primaria).
query.Locate('Field1;Field2',VarArrayOf([Value1,Value2]),[]);
If Locate
rendimenti True
, edita la riga, altrimenti si aggiunge uno nuovo.
Quindi, per quanto riguarda la tabella composta da circa 200000 righe, ciascuna operazione Locate
richiede un certo periodo di tempo ... quindi riesce ad aggiornare circa 5-6 righe al secondo.
Quali cose dovrei considerare per migliorarlo?
Probabilmente sostituire l'individuazione tramite questa grande selezione con query separate?
Questa soluzione ha ridotto il tempo di caricamento da 4 ore a meno di 4 minuti. Apprezzo molto il vostro aiuto! Grazie! – horgh