Optimisation traitement sql
Bonjour je m'attaque aujourd'hui à de l'optimisation de mon application.
Bien qu'ayant lu la FAQ access concernant cette tâche, une question continue de me tarauder l'esprit:
Optimise ton plus les traitements en passant par du sql directe (update [table] set ...) ou bien en passant par les objets DAO.RECORDSET
exemple de code ci-dessus, lequel des traitements serait le lus optimisé et le plus rapide :
bloc 1
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Dim myRs As DAO.Recordset
'Begin the transaction
myWrk.BeginTrans
'start an update throught the recordset
Set myRs = myDb.OpenRecordset("Category")
myRs.Filter = "category_id = " & Me.Id
With myRs
.Edit
.Fields("Label") = Me.Label
.Fields("Description") = Me.Description
.Fields("TicketFlag") = Me.TicketFlag
.Fields("UpdatedBy") = Me.UpdatedBy
.Fields("UpdateDate") = Me.UpdateDate
.Update
End With
'commit the transaction
myWrk.CommitTrans dbForceOSFlush
set myRs = nothing |
vs
bloc 2
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Dim reqSQL As String
reqSQL = "update [category] set [label] = '" & param label & '" where category_id = 1
'Begin the transaction
myWrk.BeginTrans
Docmd.runSQL(reqSQL)
'commit the transaction
myWrk.CommitTrans dbForceOSFlush
set myRs = nothing |
Je precise que pour un insert, il est dit que passer par un recordset prend le traitement plus rapide :
Citation:
L'utilisation d'un Recordset rend le traitement plus rapide.
Il est possible que la différence soit due au fait que le Recordset travaille avec la mémoire avant d'écrire sur le disque, alors que n requêtes provoquent n accès disque.
http://access.developpez.com/faq/?page=SQL#PerfReq