Umgebung: Winxpsp2, MySQL5.0.18, MySQLODBC3.51DRIVER -Tabelle verwendet die MyISAM -Engine. Access2003
Verschiedene Orte:
1. Beim Einfügen von Daten sollte MySQL versuchen, InsertInto -Anweisungen zu verwenden, um die Verwendung von Rs.AddNew zu vermeiden. Wenn Sie es verwenden möchten, sollten Sie zuerst Conn.CursorLocation = 3 festlegen. Andernfalls wird ein Fehler definitiv gemeldet. Ich fand heraus, dass die Verwendung des Einsatzes etwa 3 -mal schneller ist als das Hinzufügen. Wenn Sie Rs.AddNew beim Update verwenden, können Sie den Wert von RS ("ID") im Zugriff nicht sofort erhalten.
2. Vergleich mit Zugang:
Bei der gleichen Tabellenstruktur wurde MySQL beim Einfügen von 20.000 Datenstücken 7,5 Sekunden lang aufgelöst. Wenn Sie Rs.AddNew verwenden, dauert es 24 Sekunden! Bei Access wurde es 19,8 Sekunden mit Insert transformiert, aber Rs.AddNew transierte nur 2,8 Sekunden!
Abfragevergleich: Zugriffsabfrage 40W -Stücke wurden 12 Sekunden lang digitalisiert, und MySQL betrug 14 Sekunden, was etwas langsamer war.
Zusammenfassung: Im Allgemeinen beträgt die Einfügungsgeschwindigkeit des Zugangs etwa dreimal schneller als MySQL. Wenn das Datenvolumen relativ gering ist, ist der Zugriff etwa zweimal schneller als MySQL. Wenn das Datenvolumen jedoch groß ist, ändert sich die Abfragegeschwindigkeit von MySQL nicht stark, aber der Zugriff nimmt erheblich ab.
Natürlich sollte MySQL schneller sein als Zugang. Ich denke, das Problem liegt in seinem ODBC -Treiber, und der Access -Treiber verwendet OLE. Microsoft hat viele Optimierungen dafür gemacht, daher wurde in diesem Test MySQL Unrecht! Was die Gleichzeitleistung betrifft, ich habe sie nicht getestet, aber ich denke, der Zugang sollte viel schlechter sein als MySQL.
Wenn Sie verwenden möchten
Rs.PageCount
rs.pagesize
Rs.absolutepage
Rs.RecordCount
Für eine solche Eigenschaft müssen Sie zuerst Conn.CursorLocation = 3
Andernfalls können alle oben genannten Attribute nicht verwendet werden.
Um verstümmelten Code zu verhindern und chinesische Fehler einzufügen, müssen Sie unmittelbar nach Conn.open: conn.execute ("setNames'gb2312 '").
Andernfalls wird es definitiv Fehler im Einfügen geben, und der verstümmelte Code wird nicht ausgehandelt.
Verbindungsmethode:
'Verbinden Sie sich mit System DNS:
StrConnection = "dsn = mySQL; Option = 16384; TREIBREIS = {MYSQLODBC3.51DRIVER}; Server = 127.0.1; uid = root; PWD = 67918; Database = Test"
'Schließen Sie sich direkt mit Zeichenfolgen an:
'StrConnection = "treiber = {mysqlodbc3.51driver}; server = localHost; port = 3306; Option = 0; Socket =; STMT =; Datenbank = test; uid = root; PWD = 67918; Option = 16384"
setConn = server.createObject ("adodb.Connection")
Conn.CursorLocation = 3
Conn.openstrConnection