Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Come velocizzare la ricerca di records ?

22 views
Skip to first unread message

summario

unread,
Nov 5, 2012, 9:04:42 AM11/5/12
to
Buona settimana a tutti,
Ho un archivio di 1000 records che leggo in base al setfilter() e che ne trascrivo il risultato in un file temp.
Questa seek mi dura quasi un minuto a prescindere dalla ricerca che al massimo unisce due campi ...
Come velocizzare tale ricerca e portarla a tempi accettabili, senza dover ricorrere a contorsioni da fachiro !!???

Pensavo di usare un array e gestire il risultato della ricerca dall'array, ma come fare senza rallentare ancora la gestione ??

Avete qualche Suggerimento o esempio da cui partire ?

MArio

Massimo Bighelli

unread,
Nov 5, 2012, 12:03:47 PM11/5/12
to
non ho capito
- devi copiare 1000 record filtrati
- devi copiare alcuni record presi dai 1000
???

Wolfgang Riedmann

unread,
Nov 5, 2012, 12:58:32 PM11/5/12
to
Ciao Mario,

per velocizzare la lettura (se davvero devi leggere tutti i record),
vale la pena impostare SetOrder( 0 ) e leggere in "natural order".

Wolfgang

Alessandro

unread,
Nov 5, 2012, 1:00:34 PM11/5/12
to
Usa i CDX e creati un index ... evita i setfilter e cose del genere che poi
creano problemi in rete ...

Ciao Alessandro


"summario" ha scritto nel messaggio
news:8dad7e75-557b-47ce...@googlegroups.com...

summario

unread,
Nov 5, 2012, 2:32:27 PM11/5/12
to
Ciao Wolfgang, la lettura di tutti i records avviene solo quando il cliente richiede la disponibilità di tutto l'archivio, infatti lo legge e lo trascrive tutto in un file di appoggio ordinato. E' questa lettura/trascrizione che vorrei velocizzare davvero .... ma come ???

Grazie per ogni suggerimento e grazie anche per le proposte degli altri colleghi.

Wolfgang Riedmann

unread,
Nov 5, 2012, 2:48:56 PM11/5/12
to
Ciao Mario,

come scritto:

> > per velocizzare la lettura (se davvero devi leggere tutti i record),
> >
> > vale la pena impostare SetOrder( 0 ) e leggere in "natural order".

questo velocizza la lettura di molto perch� legge il file in maniera
sequenziale senza rispettare indici che richiedono frequentemente
riposizionamenti.

Comunque, anche la lettura ReadOnly � pi� veloce della lettura se il
file � aperto in Read/Write.

Altra cosa che potresti provare: disabilitare le notificazione con
SuspendNotification(), oppure usare direttamente le funzioni Clipper
invece che usare i DBServer con il loro overhead.

Inoltre, se non ti servono campi memo, puoi saltare completamente il
driver DBFCDX e leggere il file in maniera binaria con FOpen()/FRead()
e FClose(). Questo porta un altro salto di velocit� ma � parecchio
lavoro perch� tutto il lavoro di lettura campi � lasciato a te.


Wolfgang


summario

unread,
Nov 6, 2012, 2:10:02 AM11/6/12
to
Il giorno lunedì 5 novembre 2012 20:48:58 UTC+1, Wolfgang Riedmann ha scritto:
> Ciao Mario,
>
>
>
> come scritto:
>
>
>
> > > per velocizzare la lettura (se davvero devi leggere tutti i record),
>
> > >
>
> > > vale la pena impostare SetOrder( 0 ) e leggere in "natural order".
>
>
>
> questo velocizza la lettura di molto perchè legge il file in maniera
>
> sequenziale senza rispettare indici che richiedono frequentemente
>
> riposizionamenti.
>
>
>
> Comunque, anche la lettura ReadOnly è più veloce della lettura se il
>
> file è aperto in Read/Write.
>
>
>
> Altra cosa che potresti provare: disabilitare le notificazione con
>
> SuspendNotification(), oppure usare direttamente le funzioni Clipper
>
> invece che usare i DBServer con il loro overhead.
>
>
>
> Inoltre, se non ti servono campi memo, puoi saltare completamente il
>
> driver DBFCDX e leggere il file in maniera binaria con FOpen()/FRead()
>
> e FClose(). Questo porta un altro salto di velocità ma è parecchio
>
> lavoro perchè tutto il lavoro di lettura campi è lasciato a te.
>
>
>
>
>
> Wolfgang

Grazie Wolfgang, per il tuo consiglio, farò dei tentativi con i tuoi suggerimenti.
Grazie anche alla collaborazione di tutti voi che avete risposto a questo mio appello.

Mario
0 new messages