Environnement : winxp sp2, mysql5.0.18, la table des pilotes mysqlodbc 3.51 utilise le moteur myisam. accès 2003
Différents lieux :
1. Lors de l'insertion de données, MySQL doit essayer d'utiliser l'instruction insert into et éviter d'utiliser rs.addnew. S'il est nécessaire de l'utiliser, vous devez d'abord définir conn.CursorLocation=3, sinon une erreur sera certainement signalée. J'ai trouvé que l'utilisation de insert est environ plus rapide que addnew 3 fois. De plus, si vous utilisez rs.addnew lorsque vous rs.update, vous ne pouvez pas obtenir immédiatement la valeur de rs (id) lors de l'accès.
2. Comparaison avec l'accès :
Avec la même structure de table, lorsque vous utilisez insert pour insérer 20 000 éléments de données, MySQL prend 7,5 secondes, et si vous utilisez rs.addnew, cela prend 24 secondes ! Lors de l'accès, l'utilisation de insert a pris 19,8 secondes, mais rs.addnew n'a pris que 2,8 secondes !
Comparaison des requêtes : l'accès à la requête de 400 000 éléments de données a pris 12 secondes, la requête MySQL a pris 14 secondes, ce qui est légèrement plus lent.
Résumé : De manière générale, la vitesse d'insertion de l'accès est environ trois fois plus rapide que celle de MySQL. Lors de l'interrogation de données, si la quantité de données est relativement petite, l'accès est environ 2 fois plus rapide que MySQL. Cependant, lorsque la quantité de données est importante, la vitesse d'interrogation de MySQL ne change pas beaucoup, mais l'accès diminue considérablement.
Bien sûr, mysql devrait être plus rapide que l'accès. Je suppose que le problème réside dans son pilote odbc, et le pilote d'accès utilise ole, Microsoft a fait de nombreuses optimisations pour cela, donc dans ce test, mysql a été lésé ! Quant aux performances de concurrence, je ne l'ai pas testé, mais je pense que l'accès devrait être bien pire que MySQL.
Si vous souhaitez utiliser
rs.pagecount
rs.pagesize
rs.AbsolutePage
rs.recordcount
Pour de telles propriétés, vous devez d'abord conn.CursorLocation=3
Sinon, aucun des attributs ci-dessus ne pourra être utilisé.
De plus, afin d'éviter l'insertion de caractères tronqués et d'erreurs chinoises, vous devez immédiatement après conn.open : conn.Execute (SET NAMES 'gb2312')
Sinon, une erreur d’insertion se produira certainement et le code sera tronqué.
Méthode de connexion :
'Connectez-vous à l'aide du DNS système :
strconnection=dsn=mysql; OPTION=16384;driver={pilote mysql odbc 3.51};server=127.0.0.1;uid=root;pwd=67918;database=test
'Concaténer directement avec des chaînes :
'strconnection=Driver={pilote mysql odbc 3.51} ; Serveur=localhost ; Option=0 ; Base de données=test ;
définir conn=server.createobject(adodb.connection)
conn.CursorLocation=3
conn.open strconnexion