Newsgroup: it.comp.appl.access
Titolo: DFirst e DLookup Vs Select in recordset

Ciao a tutti e rieccomi con un quesito più filosofico e teorico.
Ho ereditato la manutenzione di un grosso applicativo con FE e BE
entrambi access2000 e con tabella "principale" che a fine anno
raggiunge i 12000 record. Questa tabella è relazionata con le sue
righe e mediamente ci sono 10 righe per ogni testata.
Questo per dare un'idea dei volumi. Nel codice si fa spesso uso di
DFirst e DLookup sulle testate, funzioni di cui conoscevo l'esistenza,
ma in pratica non ho mai usato.
Avendo lavorato a lungo in vb e ora in 
vb.net
 di solito mi apro un
recordset e mi estraggo il campo che mi serve con una query mirata e
ottimizzata "a buon senso" (non sono esperta di come access gestisce
gli indici e di ottimizzazioni raffinate).
Secondo voi quale tecnica è da preferirsi o meglio quali sono le
considerazioni da fare prima di decidere che soluzione adottare per le
modifiche o il riordino del codice? (come sempre quando ci lavorano
più persone che non sanno cosa faranno il mese prossimo, il tutto è un
gran casino dove perfino il nome delle variabili è un lusso che non si
sono concessi ...)
Finora non mi sono mai fatta grossi problemi, perché le tabelle che
gestivo erano dell'ordine delle poche migliaia di record, ma adesso
non vorrei riordinare e sistemare tutto in modo precisino e poi
cannare qualcosa di importante che mi fa crollare le prestazioni, che
per ora (miracolo! siamo già a 8000 record nella tabella delle testate
principale e il db è intorno ai 35Mb) sono ancora ottime (per quel che
devono fare gli operatori sul FE).
Un'ultima nota: c'è un'infinità di indici definiti sui singoli campi
in modo quasi casuale (come se fossero stati buttati lì nella
definizione della tabella lasciando il campo "Indicizzato" a Sì senza
pensarci due volte. Io uso pochissimi indici oltre alla chiave
primaria, più che altro quando sono indici univoci su più campi che mi
evitano doppioni dal punto di vista dei dati. Che faccio qui? Rischio
e tolgo qualcosa? Lascio, della serie applicativo che funziona non si
tocca?
Se qualcuno ha voglia di chiachierare un po' su questi aspetti,
attendo pareri (senza fretta ...)
Ciao e buon lavoro.
A.


Molto meglio rst con query mirate o raggruppate
Gli indici servono specie se fai ricerca su quei campi
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access
Segrate (MI), 7-8 giugno 2007

 ha scritto nel messaggio
news:1188829197....@50g2000hsm.googlegroups.com...



Ciao Anna.
Le cose non sono mai Bianche o Nere... la tua situazione pertanto è
passibile di differenze...!
Le funzioni di aggregazione sui Domini(quelle che hai citato) funzionano
molto bene se il DB è in locale
e se il loro utilizzo non è all'interno di un ciclo molto lungo...!
Se le tabelle sono Linkate l'uso di tali funzioni è meno performante di
quanto può fare un Recordset.
Trovi quì un test:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=277
Chiaramente è opportuno dare al test un giusto peso.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 Trovi quì un test:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=277
Avevo già visto il test, purtroppo ho solo access2000, se hai un link
per 2k lo provo senz'altro.
Grazie anche a MAssimiliano per il suo parere.
Ciao
A.

A.
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------

 la performance peggiora forse anche significativamente.
Ok, a questo punto non ci penso affatto a eliminare indici, semmai
vedrò se aggiungerne altri per le nuove tabelle e i nuvovi campi su
tabelle esistenti in base alle prestazioni delle query.
Grazie
Ciao
A.