Newsgroup: it.comp.lang.visual-basic
Titolo: [DAO] Ottimizzazione prestazioni oggetti

Ciao a tutti,
ho da porre un paio di domande sull'ottimizzazione delle prestazioni
di alcuni oggetti DAO.
1. Supponiamo di far riferimento ad UNA SOLA tabella di database
access, per la quale devo fare solo operazioni del tipo aggiungi,
edita, cancella o trova (seek); che vantaggi offre in termini di
prestazioni l'apertura di un oggetto recordset di tipo tabella
rispetto a uno di tipo dynaset o di tipo snapshot? Inoltre il metodo
seek su indice è più veloce del findfirst?
2. Dovendo accedere ad un campo di un record si possono usare entrambe
le espressioni:
	m_rs!Nome
oppure
	m_rs.Fields("Nome").Value
Il primo, che usa l'operatore di ricerca di collezione, dovrebbe
essere più lento.
Quale dei due è consigliabile per ottimizzare le prestazioni?
3. L'istruzione SQL "SELECT * FROM ARTICOLI" crea una recordset con
tutti i campi della tabella articoli, usando l'operatore *. Questo
operatore offre prestazioni superiori nella creazione del record set
rispetto ad un'enumerazione di tutti i campi della tabella? (Il
quesito si pone se mi servono solo alcuni campi della tabella e quindi
creare un recordset più piccolo ed efficiente)
Mi scuso per il lungo post e vi ringrazio in anticipo per le risposte.
Giovanni.
Ciao,
 Giovanni 
  ( Ing...@SoftHome.net )
To reply please remove 'XYZ'

 creare un recordset più piccolo ed efficiente)
Quando l'interprete SQL (perchè SQL è interpretato dai moduli di gestione
SQL dei vari DB) trova un *, risponde restituendo l'insieme degli oggetti
Filed della tabella in esame, quindi potrà evitare di eseguire il controllo
sintattico e quello di corrispondenza "nomi campi" (cioè se i nomi di record
scritti nell'istruzione SELECT corrispondono agli oggetti Filed della
tabella).
In termini di prestazioni, direi che la selezione di un insieme definito di
campi è superiore a quella della selezione di tutti i record (*). Inoltre
aumenta anche la leggibilità del codice e quindi anche la sua manutenzione
nel tempo.
Spero di esserti stato utile
                    Davide
PS : Se qualcuno riscontra delle imprecisioni nelle mie risposte, non fatevi
scrupolo nel correggermi.

creare un recordset piÃ¹ piccolo ed efficiente)
La differenza è di nuovo impercettibile. Se ti serve solo una piccola
parte dei campi presenti in una tabella conviene elencarli per
diminuire la quantità di dati da trasferire. Mi sa che però il
vantaggio si presenta solo usando un database client-server che ti
restituisce tramite la rete un result-set più piccolo. Se usi access,
anche in rete, credo che non cambi niente.
La cosa da curare per velocizzare la creazione di un recordset è la
corretta indicizzazione delle tabelle. Se hai messo gli indici che
servono e fai delle richieste ragionevoli i tempi di risposta con
Access sono sempre brevissimi.
Un buon modo per verificare il tutto è mettere il database su un
server di rete: la connessione è molto più lenta rispetto
all'hard-disk locale ed eventuali magagne saltano subito fuori.
Ciao
--------------------------------------------------------------------
Fulvio Senore
Eliminate "zz" dall'indirizzo e-mail per scrivermi (spammers...)
Remove "zz" from e-mail address to write me (spammers...)
--------------------------------------------------------------------