bonjour,

Voici mon problème, je doit traiter plusieurs millions d'enregistrement d'une BDD.

Voici mon code, il n'est pas propre je sais mais je l'ai développé en 10 minutes pour commencer le traitement le plus vite possible.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
Private Sub Command1_Click()
    Dim cnx_sql As ADODB.Connection
    Dim rc As ADODB.Recordset
    Dim rc2 As ADODB.Recordset
    Dim rc3 As ADODB.Recordset
    Dim idaffi As Long
    Dim idtva As Integer
    Dim i, i2 As Long
 
    Set cnx_sql = New ADODB.Connection
    cnx_sql.ConnectionString = "DRIVER={SQL Server};server=SQL;uid=;pwd=;database=Transmission; "
    cnx_sql.Open
    Set rc = New ADODB.Recordset
    rc.CacheSize = 300
    rc.Open "select * from table_2003 where date_trans='10301'", cnx_sql, adOpenStatic, adLockOptimistic, -1
    i = 0
    i2 = rc.RecordCount
    prog.Max = i2
    Label1.Caption = i & " sur " & i2
    Do Until rc.EOF
        'sélection du l'id_affilié
        Set rc2 = New ADODB.Recordset
        idaffi = 0
        rc2.Open "select id_affilies from affilies where code_trans='" & rc!code & "'", cnx_sql, adOpenStatic, adLockOptimistic, -1
        idaffi = rc2!id_affilies
        rc2.Close
        'Sélection du code TVA
        'Set rc2 = New ADODB.Recordset
        'rc2.Open "select ID_TVA from Ligne_code_tva where id_affilies= '" & idaffi & "' and code_tva_affilie='" & rc!tva & "'", cnx_sql, adOpenStatic, adLockOptimistic, -1
        'idtva = rc2!id_tva
        'rc2.Close
        cnx_sql.Execute ("insert into ligne_transmission (id_affilies,id_tva,cip,paht,pvht,stock,quantite,date_transmission) values ('" & idaffi & "','" & rc!tva & "','" & rc!CIP & "','" & rc!PA & "','" & rc!PV & "','" & rc!stock & "','" & rc!quantité & "','" & Replace(rc!Date_trans, "103", "2003") & "')")
        i = i + 1
        prog.Value = i
        Label1.Caption = i & " sur " & i2
        DoEvents
        rc.MoveNext
    Loop
    rc.Close
 
 
End Sub
Ma question est quelles sont les moyens d'optimiser les requêtes action et le parcours de mon recordset "rc", j'ai mis un cachesize à 300 mais ça n'a pas l'air d'aller beaucoup plus vite.