環境:winxpsp2、mysql5.0.18、mysqlodbc3.51driverテーブルはmyisamエンジンを使用しています。 Access2003
別の場所:
1.データを挿入する場合、MySQLはrs.addnewの使用を避けるためにInsertINTOステートメントを使用しようとする必要があります。使用したい場合は、最初にconn.cursorlocation = 3を設定する必要があります。それ以外の場合、エラーは間違いなく報告されます。挿入の使用は、Newを追加するよりも約3倍高速であることがわかりました。また、更新時にrs.addnewを使用する場合、アクセスでRs( "id")の値をすぐに取得することはできません。
2。アクセスとの比較:
同じテーブル構造の場合、20,000個のデータを挿入すると、MySQLが7.5秒間溶解し、Rs.Addnewを使用すると24秒かかります!アクセスでは、インサートで19.8秒間変換されましたが、Rs.Addnewは2.8秒間しか変換されませんでした!
クエリ比較:アクセスクエリ40Wピースは12秒間デジタル化され、MySQLは14秒でしたが、これは少し遅かったです。
概要:一般に、アクセスの挿入速度はMySQLの約3倍高速です。データをクエリする場合、データボリュームが比較的小さい場合、アクセスはMySQLの約2倍高速です。ただし、データボリュームが大きい場合、MySQLのクエリ速度はあまり変わりませんが、アクセスは大幅に減少します。
もちろん、MySQLはアクセスよりも速いはずです。この問題はODBCドライバーにあると思います。アクセスドライバーはOLEを使用しています。 Microsoftは多くの最適化を行ってきたので、このテストではMySQLが不当な扱いを受けました!並行性のパフォーマンスについては、テストしていませんが、アクセスはMySQLよりもはるかに悪いはずだと思います。
使用したい場合
rs.pagecount
rs.pagesize
rs.absolutepage
rs.RecordCount
そのようなプロパティの場合、最初にconn.cursorlocation = 3が必要です
それ以外の場合、上記の属性はすべて使用できません。
また、文字化けコードを防ぎ、中国のエラーを挿入するには、conn.open:conn.execute( "setNames'GB2312 '")の直後にする必要があります。
それ以外の場合、挿入に間違いなくエラーが発生し、文字化けコードは交渉されません。
接続方法:
'システムDNSとの接続:
strconnection = "dsn = mysql; option = 16384; driver = {mysqlodbc3.51driver}; server = 127.0.0.1; uid = root; pwd = 67918; database = test"
'文字列に直接接続します:
'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