Bonjour à tous,
J'ai de sérieux problème de performance avec un programme écrit en VB6 qui
donne satisfaction dès lors qu'on manipule des tables de moins de 30000
enregistrements.
J'ai depuis peu des tables de 300000 enregistrements et là, le temps de
traitement n'est pas multiplié par 10 mais plutôt par 50 !!
Ca marche, mais c'est d'une lenteur à mourir :-((
Mon traitement est simple : je parcours un recordset qui est une vue des
champs utiles d'une table.
Dans chaque enregistrement, je mets à jour un champ particulier en tena nt
compte des 14 enregistrements précédents préalablement mémorisé s dans un
tableau.
Le traitement met 7 à 8 minutes pour parcourir et mettre à jour (si l es
conditions sont remplies) les 30000 enregistrements stockés dans une ta ble
de base Access créée par l'application elle-même via ADOX.
Il faut une nuit maintenant (6 à 8 heures) pour 300000.
J'utilise juste les champs nécessaires, un curseur ForwardOnly (le +
rapide), une requête SQL de mise à jour avec un Connection.Execute Ma Requête
: les champs sont repérés par leur numéros RecordSet.Field(NoCha mp), pas
d'affichage de bargraph ou autre...
Auriez-vous eu ce genre de soucis, faut-il remplacer la base Access par S QL
SERVER par exemple (c'est faisable puisque mon programme se connecte via ADO
à la base).
Merci beaucoup pour vos suggestions.
Teddy
Bonjour à tous,
J'ai de sérieux problème de performance avec un programme écrit en VB6 qui
donne satisfaction dès lors qu'on manipule des tables de moins de 30000
enregistrements.
J'ai depuis peu des tables de 300000 enregistrements et là, le temps de
traitement n'est pas multiplié par 10 mais plutôt par 50 !!
Ca marche, mais c'est d'une lenteur à mourir :-((
Mon traitement est simple : je parcours un recordset qui est une vue des
champs utiles d'une table.
Dans chaque enregistrement, je mets à jour un champ particulier en tena nt
compte des 14 enregistrements précédents préalablement mémorisé s dans un
tableau.
Le traitement met 7 à 8 minutes pour parcourir et mettre à jour (si l es
conditions sont remplies) les 30000 enregistrements stockés dans une ta ble
de base Access créée par l'application elle-même via ADOX.
Il faut une nuit maintenant (6 à 8 heures) pour 300000.
J'utilise juste les champs nécessaires, un curseur ForwardOnly (le +
rapide), une requête SQL de mise à jour avec un Connection.Execute Ma Requête
: les champs sont repérés par leur numéros RecordSet.Field(NoCha mp), pas
d'affichage de bargraph ou autre...
Auriez-vous eu ce genre de soucis, faut-il remplacer la base Access par S QL
SERVER par exemple (c'est faisable puisque mon programme se connecte via ADO
à la base).
Merci beaucoup pour vos suggestions.
Teddy
Bonjour à tous,
J'ai de sérieux problème de performance avec un programme écrit en VB6 qui
donne satisfaction dès lors qu'on manipule des tables de moins de 30000
enregistrements.
J'ai depuis peu des tables de 300000 enregistrements et là, le temps de
traitement n'est pas multiplié par 10 mais plutôt par 50 !!
Ca marche, mais c'est d'une lenteur à mourir :-((
Mon traitement est simple : je parcours un recordset qui est une vue des
champs utiles d'une table.
Dans chaque enregistrement, je mets à jour un champ particulier en tena nt
compte des 14 enregistrements précédents préalablement mémorisé s dans un
tableau.
Le traitement met 7 à 8 minutes pour parcourir et mettre à jour (si l es
conditions sont remplies) les 30000 enregistrements stockés dans une ta ble
de base Access créée par l'application elle-même via ADOX.
Il faut une nuit maintenant (6 à 8 heures) pour 300000.
J'utilise juste les champs nécessaires, un curseur ForwardOnly (le +
rapide), une requête SQL de mise à jour avec un Connection.Execute Ma Requête
: les champs sont repérés par leur numéros RecordSet.Field(NoCha mp), pas
d'affichage de bargraph ou autre...
Auriez-vous eu ce genre de soucis, faut-il remplacer la base Access par S QL
SERVER par exemple (c'est faisable puisque mon programme se connecte via ADO
à la base).
Merci beaucoup pour vos suggestions.
Teddy
Bonjour à tous,
J'ai de sérieux problème de performance avec un programme écrit en VB6 qui
donne satisfaction dès lors qu'on manipule des tables de moins de 30000
enregistrements.
J'ai depuis peu des tables de 300000 enregistrements et là, le temps de
traitement n'est pas multiplié par 10 mais plutôt par 50 !!
Ca marche, mais c'est d'une lenteur à mourir :-((
Mon traitement est simple : je parcours un recordset qui est une vue des
champs utiles d'une table.
Dans chaque enregistrement, je mets à jour un champ particulier en tenant
compte des 14 enregistrements précédents préalablement mémorisés dans un
tableau.
Le traitement met 7 à 8 minutes pour parcourir et mettre à jour (si les
conditions sont remplies) les 30000 enregistrements stockés dans une table
de base Access créée par l'application elle-même via ADOX.
Il faut une nuit maintenant (6 à 8 heures) pour 300000.
J'utilise juste les champs nécessaires, un curseur ForwardOnly (le +
rapide), une requête SQL de mise à jour avec un Connection.Execute
MaRequête
: les champs sont repérés par leur numéros RecordSet.Field(NoChamp), pas
d'affichage de bargraph ou autre...
Auriez-vous eu ce genre de soucis, faut-il remplacer la base Access par
SQL
SERVER par exemple (c'est faisable puisque mon programme se connecte via
ADO
à la base).
Merci beaucoup pour vos suggestions.
Teddy
Bonjour à tous,
J'ai de sérieux problème de performance avec un programme écrit en VB6 qui
donne satisfaction dès lors qu'on manipule des tables de moins de 30000
enregistrements.
J'ai depuis peu des tables de 300000 enregistrements et là, le temps de
traitement n'est pas multiplié par 10 mais plutôt par 50 !!
Ca marche, mais c'est d'une lenteur à mourir :-((
Mon traitement est simple : je parcours un recordset qui est une vue des
champs utiles d'une table.
Dans chaque enregistrement, je mets à jour un champ particulier en tenant
compte des 14 enregistrements précédents préalablement mémorisés dans un
tableau.
Le traitement met 7 à 8 minutes pour parcourir et mettre à jour (si les
conditions sont remplies) les 30000 enregistrements stockés dans une table
de base Access créée par l'application elle-même via ADOX.
Il faut une nuit maintenant (6 à 8 heures) pour 300000.
J'utilise juste les champs nécessaires, un curseur ForwardOnly (le +
rapide), une requête SQL de mise à jour avec un Connection.Execute
MaRequête
: les champs sont repérés par leur numéros RecordSet.Field(NoChamp), pas
d'affichage de bargraph ou autre...
Auriez-vous eu ce genre de soucis, faut-il remplacer la base Access par
SQL
SERVER par exemple (c'est faisable puisque mon programme se connecte via
ADO
à la base).
Merci beaucoup pour vos suggestions.
Teddy
Bonjour à tous,
J'ai de sérieux problème de performance avec un programme écrit en VB6 qui
donne satisfaction dès lors qu'on manipule des tables de moins de 30000
enregistrements.
J'ai depuis peu des tables de 300000 enregistrements et là, le temps de
traitement n'est pas multiplié par 10 mais plutôt par 50 !!
Ca marche, mais c'est d'une lenteur à mourir :-((
Mon traitement est simple : je parcours un recordset qui est une vue des
champs utiles d'une table.
Dans chaque enregistrement, je mets à jour un champ particulier en tenant
compte des 14 enregistrements précédents préalablement mémorisés dans un
tableau.
Le traitement met 7 à 8 minutes pour parcourir et mettre à jour (si les
conditions sont remplies) les 30000 enregistrements stockés dans une table
de base Access créée par l'application elle-même via ADOX.
Il faut une nuit maintenant (6 à 8 heures) pour 300000.
J'utilise juste les champs nécessaires, un curseur ForwardOnly (le +
rapide), une requête SQL de mise à jour avec un Connection.Execute
MaRequête
: les champs sont repérés par leur numéros RecordSet.Field(NoChamp), pas
d'affichage de bargraph ou autre...
Auriez-vous eu ce genre de soucis, faut-il remplacer la base Access par
SQL
SERVER par exemple (c'est faisable puisque mon programme se connecte via
ADO
à la base).
Merci beaucoup pour vos suggestions.
Teddy
C'est 1 table unique qui est une sorte de LOG d'événements triés se lon 2
champs codes numériques et selon la Date/Heure d'évènement.
Donc pas de schéma compliqué avec des jointures dans tous les sens, d e
contraintes sur des champs, de triggers, d'interdépendance de tables ,
etc...
Je parcours le recordset en mémorisant les valeurs de 3 champs dans les 14
précédents enregistrements (tableau de 14 lignes "glissant"). C'est c omme
une "fenêtre de visualisation" de 14 enregistrements que je déplace d ans le
recordset du début à la fin.
Je pense que le fait de comparer des valeurs avec celles du tableau et fa ire
des mises à jour indépendantes du recordset via Cnx.Execute "MaRequ ête de
MAJ" n'est pas performant mais si j'utilise un recordset dynamique, le te mps
de traitement sera encore plus long non ?
C'est 1 table unique qui est une sorte de LOG d'événements triés se lon 2
champs codes numériques et selon la Date/Heure d'évènement.
Donc pas de schéma compliqué avec des jointures dans tous les sens, d e
contraintes sur des champs, de triggers, d'interdépendance de tables ,
etc...
Je parcours le recordset en mémorisant les valeurs de 3 champs dans les 14
précédents enregistrements (tableau de 14 lignes "glissant"). C'est c omme
une "fenêtre de visualisation" de 14 enregistrements que je déplace d ans le
recordset du début à la fin.
Je pense que le fait de comparer des valeurs avec celles du tableau et fa ire
des mises à jour indépendantes du recordset via Cnx.Execute "MaRequ ête de
MAJ" n'est pas performant mais si j'utilise un recordset dynamique, le te mps
de traitement sera encore plus long non ?
C'est 1 table unique qui est une sorte de LOG d'événements triés se lon 2
champs codes numériques et selon la Date/Heure d'évènement.
Donc pas de schéma compliqué avec des jointures dans tous les sens, d e
contraintes sur des champs, de triggers, d'interdépendance de tables ,
etc...
Je parcours le recordset en mémorisant les valeurs de 3 champs dans les 14
précédents enregistrements (tableau de 14 lignes "glissant"). C'est c omme
une "fenêtre de visualisation" de 14 enregistrements que je déplace d ans le
recordset du début à la fin.
Je pense que le fait de comparer des valeurs avec celles du tableau et fa ire
des mises à jour indépendantes du recordset via Cnx.Execute "MaRequ ête de
MAJ" n'est pas performant mais si j'utilise un recordset dynamique, le te mps
de traitement sera encore plus long non ?
C'est 1 table unique qui est une sorte de LOG d'événements triés selon 2
champs codes numériques et selon la Date/Heure d'évènement.
Donc pas de schéma compliqué avec des jointures dans tous les sens, de
contraintes sur des champs, de triggers, d'interdépendance de tables,
etc...
Je parcours le recordset en mémorisant les valeurs de 3 champs dans les 14
précédents enregistrements (tableau de 14 lignes "glissant"). C'est comme
une "fenêtre de visualisation" de 14 enregistrements que je déplace dans
le
recordset du début à la fin.
Je pense que le fait de comparer des valeurs avec celles du tableau et
faire
des mises à jour indépendantes du recordset via Cnx.Execute "MaRequête de
MAJ" n'est pas performant mais si j'utilise un recordset dynamique, le
temps
de traitement sera encore plus long non ?
C'est 1 table unique qui est une sorte de LOG d'événements triés selon 2
champs codes numériques et selon la Date/Heure d'évènement.
Donc pas de schéma compliqué avec des jointures dans tous les sens, de
contraintes sur des champs, de triggers, d'interdépendance de tables,
etc...
Je parcours le recordset en mémorisant les valeurs de 3 champs dans les 14
précédents enregistrements (tableau de 14 lignes "glissant"). C'est comme
une "fenêtre de visualisation" de 14 enregistrements que je déplace dans
le
recordset du début à la fin.
Je pense que le fait de comparer des valeurs avec celles du tableau et
faire
des mises à jour indépendantes du recordset via Cnx.Execute "MaRequête de
MAJ" n'est pas performant mais si j'utilise un recordset dynamique, le
temps
de traitement sera encore plus long non ?
C'est 1 table unique qui est une sorte de LOG d'événements triés selon 2
champs codes numériques et selon la Date/Heure d'évènement.
Donc pas de schéma compliqué avec des jointures dans tous les sens, de
contraintes sur des champs, de triggers, d'interdépendance de tables,
etc...
Je parcours le recordset en mémorisant les valeurs de 3 champs dans les 14
précédents enregistrements (tableau de 14 lignes "glissant"). C'est comme
une "fenêtre de visualisation" de 14 enregistrements que je déplace dans
le
recordset du début à la fin.
Je pense que le fait de comparer des valeurs avec celles du tableau et
faire
des mises à jour indépendantes du recordset via Cnx.Execute "MaRequête de
MAJ" n'est pas performant mais si j'utilise un recordset dynamique, le
temps
de traitement sera encore plus long non ?