Newsgroup: it.comp.appl.access
Titolo: più veloce seek o dlookup

continuo la mia serie di domande sulle performance via codice
è più performante l'uso di un recordset con seek o quello di dlookup per la
ricerca di un valore?
immagino che dlookup sia più versatile in quanto permette l'uso di criteri
che non necessarimente contemplino solo indici, ma a parità di condizioni
(cioè che nel criterio uso un indice)?
grazie mille


Come versatilità dal punto di vista che hai esposto tu non cambia
nulla... il problema è che Seek non è utilizzabile su LinkedTable,
quindi solitamente se serve usarlo si apre un Recordset diretto sul
BE...!
Seek è più performante, ma eventualmente è più performante di DlookUp
anche la semplice estrazione del Recordset:
Dim Rs as DAO.Recordset
Set Rs=CurrentDb.OpenRecordset("SELECT * FROM T1 WHERE
Criteri",dbOpenDynaset,dbReadOnly)
Ora in RS!NomeCampo hai il campo
questo equivale come funzionamento a :
Dlookup("NomeCampo","T1","Criteri")
Le prestazioni soprattutto su LinkedTable sono molto differenti(su
LocalTable invece non giustificano la scelta differente)...!
Quì trovi un Test fatto tempo fà...
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=277
@Alex

"Alessandro Baraldi" <
Come versatilità dal punto di vista che hai esposto tu non cambia
nulla... il problema è che Seek non è utilizzabile su LinkedTable,
quindi solitamente se serve usarlo si apre un Recordset diretto sul
BE...!
----------------------------------------------------------------------
Non è proprio così Alessandro: Seek è utilizzabile su Linked Tables MDB (non
lo è via ODBC).
Le prestazioni, all'interno di un ciclo significativo, sono enormemente
superiori rispetto al FindFirst o a un Dlookup.
Chiaro che se si utilizzano questi metodi per reperire un valore e solo uno,
non ci sono sostanziali differenze.
Saluti.

 Saluti.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 
www.donkarl.com/it/?FAQ6.10
Eh, eh: Alessandro non c'è bisogno di leggere alcun link, dato che è una
soluzione che m'è capitato d'usare (ed è documentata nell'Help di Access):
Set DB=OpenDataBase(PercorsoBaseDatiMDB)
Set Rst=DB.OpenRecordset("------------")
A questo punto puoi utilizzare Seek sull'oggetto Rst, anche se le tabelle
sono collegate e non locali.
E' una soluzione, come dicevo, che non può essere disponibile via ODBC ...
ma non credo sia un problema per "il maltese".
Saluti.

 Saluti.
Alt ....  nell'esempio che hai appena riportato non usi LINKED TABLE....
ti colleghi direttamente al BE... e sono 2 cose diverse, e se provi ad usare
su
CurrentDb come potresti fare con un RS normale o con Dlookup il metodo Seek
basandoti su una Linked... CICCIA
che funziona se non fai come hai detto...!
IMHO quello che ho detto è corretto.


 IMHO quello che ho detto č corretto.
Ho capito Alessandro, ma  ... chi se ne frega del fatto che sia necessario
usare OpenDataBase sul DB remoto.
Il problema, semplicemente č:
"Si puň invocare il metodo Seek da un Front-End connesso a un MDB con linked
tables?".
Risposta:  si puň, senza rinunciare agli enormi vantaggi prestazionali,
facendo come nell'esempio che postavo (preso pari pari dall'Help di Access).
La FAQ in oggetto del sito di Karl dovrebbe essere corretta/integrata.
Saluti.

 Saluti.
N'chai proprio un "sergio" da fare oggi... che stai a pettinare le
bambole...!
;-)


 ;-)
Beh, sě: lo ammetto   ;-)
Saluti.

 ha scritto nel messaggio 
news:1178192062.8...@l77g2000hsb.googlegroups.com...
Quì trovi un Test fatto tempo fà...
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=277
@Alex
[risposta]
Io ho fatto il test come faccio ad inviarti i risultati?
Perché non pensi di pubblicarli sul sito magari indicando l'HW/SW dove è 
stato eseguito?
La pagina (del tuo sito web) per l'invio della password, se dimenticata, va 
in errore...
Ciao.
-- 
Sergio MAZZA 

 Saluti.


 Sergio MAZZA
Ciao


 Saluti.
Ma senti 'sti due...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Sai che mi era rimasto impresso da te il detto "delle bambole" e l'ho
spudoratamente riciclato...
immagino sia tipico "Romano"



Ma ogni riferimento era casuale, no?     ;-)
Saluti.

 immagino sia tipico "Romano"
Io ne ricordo uno fantastico che recitava spesso un commilitone di Latina.
In pratica, quando aveva la sensazione d'essere fissato in maniera strana,
reagiva dicendo:
"Ma che guardi, c'ho i pupazzetti in facciaaaaaa???????"
Fantastico!
Saluti.

 ---------------------------------------------------------------------------
Ciao.
-- 
Sergio MAZZA 

 usare un Seek quando una semplice SELECT potrebbe essere più
performante...
Forse, ma il punto è proprio questo: chi ha usato Seek con MDB scoprirà di
dover trovare un'altra soluzione passando a un Server SQL.
Chi invece apprezza utilizzare il metodo in oggetto su MDB con tabelle
locali, scoprirà tirando un sospiro di sollievo, che basterà indirizzare la
variabile DB al database remoto, per ottenere la stessa cosa con Linked
Tables.
La FAQ di Karl, ripeto, andrebbe integrata...
Saluti.

 Saluti.
Eccerto...
Ciao.
-- 
Sergio MAZZA 

 ---------------------------------------------------------------------------
Ciao.
-- 
Sergio MAZZA 

 
e' giusto cosi'. Per uno che dimentica la password e' giusto che 
l'applicativo si incazzi un po' e dia fuori da matto.
-- 
ac
y-1=x

 ha scritto nel messaggio
news:bYo_h.29281$281....@tornado.fastwebnet.it...

Ecco mancava solo lui ... ora siamo al completo...!
Che giornataccia....


 
E dai, per una replace che non fa il suo "porco" dovere non serve 
adombrarsi. E poi io cercavo di "brutalizzare" Serginho. Se o capito il 
senso.
-- 
ac
y-1=x

 y-1=x
Alessà(che bel nome) chi non fà non falla...


 ricerca di un valore?
Nè l'uno ne l'altro. Se cerchi la performance hai tre strade:
1) una SELECT ben studiata.
2) matrici a go go.
3) una combinazione delle prime due.
Anzi, sono soluzioni da adottare a prescindere.
Saluti.
Luciano
PS Ho passato un'ora a cancellare lo spam accumulato nella casella del WB 
del sito comune, finalmente è visibile il materiale inviato. Domani (ormai 
sò stanco) lo giro a Roberto per i test, a breve la pubblicazione. 
Beh...breve è una parola grossa...:-) 

 y-1=x
Ciao.
-- 
Sergio MAZZA 

 Beh...breve è una parola grossa...:-)
Ma lo stai riconvertendo in ASP o no?
Ciao.
-- 
Sergio MAZZA 

 Ma lo stai riconvertendo in ASP o no?
E per quale ragione?
Fra l'altro ASP sta morendo, vedi anche tu il NG com'è vuoto, ed io mi sto
riconvertendo al PHP (che con Access su piattaforma IIS va alla grande).
Saluti.
Luciano

 Luciano
Ciao.
-- 
Sergio MAZZA 

 Saluti.
L'utilizzo di Seek all'interno di cicli pesanti offre prestazioni
enormemente superiori rispetto alle altre soluzioni: prova per credere.
Il rovescio della medaglia è la necessità che il campo/i di ricerca siano
indicizzati e il non funzionamento via ODBC.
Saluti.