Environnement: WinXPSP2, MySQL5.0.18, la table MySQLODBC3.51Driver utilise le moteur Myisam. Access2003
Différents endroits:
1. Lors de l'insertion de données, MySQL devrait essayer d'utiliser des instructions INSERTINTO pour éviter d'utiliser Rs.AddNew. Si vous souhaitez 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 l'insert est environ 3 fois plus rapide que d'ajouter lew. De plus, si vous utilisez Rs.AddNew lorsque vous mettez à jour, vous ne pouvez pas obtenir immédiatement la valeur de RS ("ID") dans l'accès.
2. Comparaison avec l'accès:
Pour la même structure de table, lors de l'insertion de 20 000 données, MySQL a été dissoute pendant 7,5 secondes, et si vous utilisez Rs.AddNew, cela prendra 24 secondes! Dans l'accès, il a été transformé pendant 19,8 secondes avec insert, mais Rs.Addnew n'a transformé que 2,8 secondes!
Comparaison des requêtes: les pièces de requête d'accès 40W ont été numérisées pendant 12 secondes, et MySQL était de 14 secondes, ce qui était un peu plus lent.
Résumé: En général, la vitesse d'insertion de l'accès est environ trois fois plus rapide que MySQL. Lorsque vous interrogez les données, si le volume de données est relativement petit, l'accès est environ 2 fois plus rapide que MySQL. Cependant, lorsque le volume de données est important, la vitesse de requête 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 beaucoup d'optimisations pour cela, donc dans ce test, MySQL a été lésé! Quant aux performances de la concurrence, je ne l'ai pas testée, mais je pense que l'accès devrait être bien pire que MySQL.
Si vous voulez utiliser
Rs.PageCount
Rs.PageSize
Rs.Absolutepage
Rs.recordCount
Pour une telle propriété, vous devez d'abord conn.cursorLocation = 3
Sinon, tous les attributs ci-dessus ne peuvent pas être utilisés.
De plus, afin d'éviter le code brouillé et d'insérer des erreurs chinoises, vous devez immédiatement après Conn.open: Conn.Execute ("SetNames'gb2312 '")
Sinon, il y aura certainement des erreurs d'insertion et le code brouillé ne sera pas négocié.
Méthode de connexion:
'Connectez-vous avec le système DNS:
strConnection = "dsn = mysql; option = 16384; driver = {mysqlodbc3.51driver}; server = 127.0.0.1; uid = root; pwd = 67918; database = test"
'Connectez-vous directement avec les chaînes:
'strconnection = "Driver = {mysqlodbc3.51driver}; server = localHost; port = 3306; option = 0; socket =; stmt =; database = test; uid = root; pwd = 67918; option = 16384"
setConn = server.createObject ("adodb.connection")
Conn.cursorLocation = 3
conn.openstrconnection