Bonjour,
J'ai lié avec ODBC, ma base MySQL hébergé sur un serveur, avec ma base Access. Jusque là tout va bien.
Par contre, quand j'effectue des requêtes (a priori simples), le temps d'exécution est assez important...
J'ai d'abord pensé que ça venait du fait que mes tables étaient liées et que Access allait chercher les données à chaque fois sur le serveur MySQL donc je suis passé par la création de vues pour optimiser.
En effectuant la recherche dans les vues, le temps d'exécution n'a pas changé... Les tables sur lesquelles j'effectue ces requêtes contiennent tout au plus une centaines de tuples et elles sont amenées à grandir très rapidement.
Je suis relativement nouveau avec la syntaxe Access donc soyez souples =)
Voici mes requêtes :
Grosso modo, chaque requête est lancée une trentaine de fois. Je les ai séparées car je me suis apperçu que le fait de mettre plusieurs COUNT dans le SELECT n'était pas correct. Je m'explique : si un des COUNT renvoie 0, alors tous les COUNT renvoient 0...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 For I As Integer = -SemDate.DayOfWeek + 1 To -SemDate.DayOfWeek + 5 For j As Integer = 1 To DGV_STATUS.Columns.Count - 1 sSQL = "SELECT COUNT(RES_NoRes) FROM RESULTAT_tmp R, EMPLOYE_tmp E WHERE R.RES_NoEmp = E.EMP_NoEmp AND EMP_NumDep = " & DGV_STATUS.Columns(j).ToolTipText & " AND Format(RES_DateRes, '" & FormatDate & "') LIKE '" & SemDate.AddDays(I).ToString("yyyy/MM/dd") & "' AND RES_IsVA = 1" rs.Open(sSQL, conn, CursorTypeEnum.adOpenStatic, LockTypeEnum.adLockReadOnly, -1) Adapt.Fill(Resultat, rs) rs.Close() sSQL = "SELECT COUNT(RES_NoRes) FROM RESULTAT_tmp R, EMPLOYE_tmp E WHERE R.RES_NoEmp = E.EMP_NoEmp AND EMP_NumDep = " & DGV_STATUS.Columns(j).ToolTipText & " AND Format(RES_DateRes, '" & FormatDate & "') LIKE '" & SemDate.AddDays(I).ToString("yyyy/MM/dd") & "'" rs.Open(sSQL, conn, CursorTypeEnum.adOpenStatic, LockTypeEnum.adLockReadOnly, -1) Adapt.Fill(Resultat, rs) rs.Close() Next Next
Pour cette portion de code, le temps d'exécution est de 7 secondes environ :cry:
Comment se fait-il que le temps d'exécution soit aussi élevé ?
Comment optimiser ces requêtes au mieux (pour effectuer le moins d'accès possible à la base) ?