Umgebung: WinXP SP2, MySQL 5.0.18, MySQL 3.51-Treibertabelle verwendet die Myisam-Engine. Zugang 2003
Verschiedene Orte:
1. Beim Einfügen von Daten sollte MySQL versuchen, die Anweisung insert into zu verwenden und die Verwendung von rs.addnew zu vermeiden. Wenn dies erforderlich ist, sollten Sie zuerst conn.CursorLocation = 3 festlegen. Andernfalls wird auf jeden Fall ein Fehler gemeldet Ich habe festgestellt, dass die Verwendung von insert etwa dreimal schneller ist als addnew. Wenn Sie außerdem rs.addnew beim rs.update verwenden, können Sie den Wert von rs (id) im Zugriff nicht sofort abrufen.
2. Vergleich mit Zugang:
Bei gleicher Tabellenstruktur benötigt MySQL 7,5 Sekunden, wenn Sie insert zum Einfügen von 20.000 Daten verwenden, und wenn Sie rs.addnew verwenden, dauert es 24 Sekunden! Beim Zugriff dauerte die Verwendung von insert 19,8 Sekunden, rs.addnew jedoch nur 2,8 Sekunden!
Abfragevergleich: Die Zugriffsabfrage auf 400.000 Daten dauerte 12 Sekunden, die MySQL-Abfrage dauerte 14 Sekunden, was etwas langsamer ist.
Zusammenfassung: Im Allgemeinen ist die Einfügungsgeschwindigkeit des Zugriffs etwa dreimal schneller als die von MySQL. Wenn die Datenmenge relativ klein ist, ist der Zugriff beim Abfragen etwa doppelt so schnell wie bei MySQL. Wenn die Datenmenge jedoch groß ist, ändert sich die Abfragegeschwindigkeit von MySQL nicht wesentlich, der Zugriff nimmt jedoch erheblich ab.
Natürlich sollte MySQL schneller sein als Access. Ich denke, das Problem liegt in seinem ODBC-Treiber, und der Access-Treiber hat viele Optimierungen dafür vorgenommen, also hat MySQL in diesem Test Unrecht gehabt! Was die Parallelitätsleistung betrifft, habe ich sie nicht getestet, aber ich denke, der Zugriff sollte viel schlechter sein als bei MySQL.
Wenn Sie verwenden möchten
rs.pagecount
rs.pagesize
rs.AbsolutePage
rs.recordcount
Für solche Eigenschaften müssen Sie zunächst conn.CursorLocation=3 festlegen
Andernfalls kann keines der oben genannten Attribute verwendet werden.
Um zu verhindern, dass verstümmelte Zeichen und chinesische Fehler eingefügt werden, müssen Sie außerdem unmittelbar nach conn.open Folgendes tun: conn.Execute (SET NAMES 'gb2312')
Andernfalls tritt definitiv ein Einfügefehler auf und der Code wird verstümmelt.
Verbindungsmethode:
'Verbindung über System-DNS herstellen:
strconnection=dsn=mysql; OPTION=16384;driver={mysql odbc 3.51 drivers};server=127.0.0.1;uid=root;pwd=67918;database=test
'Direkt mit Strings verketten:
'strconnection={mysql odbc 3.51 drivers}; Server=localhost; Option=0;
set conn=server.createobject(adodb.connection)
conn.CursorLocation=3
conn.open strconnection