環境: winxp sp2、mysql5.0.18、mysqlodbc 3.51 ドライバー テーブルは myisam エンジンを使用します。アクセス2003
さまざまな場所:
1. データを挿入するとき、mysql は、insert into ステートメントの使用を試み、rs.addnew を使用する必要がある場合は、最初に conn.CursorLocation=3 を設定する必要があります。そうしないと、必ずエラーが報告されます。 insert を使用すると、addnew よりも約 3 倍高速であることがわかりました。また、rs.update時にrs.addnewを使用した場合、アクセス時のrs(id)の値をすぐに取得することができません。
2.アクセスとの比較:
同じテーブル構造で、insert を使用して 20,000 個のデータを挿入する場合、MySQL では 7.5 秒かかりますが、rs.addnew を使用すると 24 秒かかります。アクセスでは、insert を使用すると 19.8 秒かかりましたが、rs.addnew には 2.8 秒しかかかりませんでした。
クエリの比較: 400,000 個のデータに対するアクセス クエリには 12 秒かかりましたが、MySQL クエリには 14 秒かかり、若干遅くなりました。
概要: 一般的に、アクセスの挿入速度は mysql の 3 倍程度です。データをクエリする場合、データ量が比較的少ない場合はmysqlの2倍程度のアクセス速度が得られますが、データ量が多くなるとmysqlのクエリ速度はあまり変わりませんが、アクセスが大幅に低下します。
もちろん、mysql は access よりも高速であるはずです。問題は odbc ドライバーにあると思います。Microsoft は ole を使用しているため、このテストでは mysql が間違っていました。同時実行のパフォーマンスについてはテストしていませんが、アクセスは mysql よりもはるかに悪いはずです。
使いたい場合は
rs.ページカウント
rs.pagesize
rs.AbsolutePage
rs.レコードカウント
このようなプロパティの場合、最初に conn.CursorLocation=3 する必要があります。
それ以外の場合、上記の属性はいずれも使用できません。
また、文字化けや中国語エラーの挿入を防ぐために、 conn.open の直後に conn.Execute (SET NAMES 'gb2312') を実行する必要があります。
そうしないと必ず挿入エラーが発生し、コード化けしてしまいます。
接続方法:
'システム DNS を使用して接続します:
strconnection=dsn=mysql;OPTION=16384;driver={mysql odbc 3.51 ドライバ};server=127.0.0.1;uid=root;pwd=67918;database=test
'文字列を直接連結します:
'strconnection = ドライバー = {mysql odbc 3.51 ドライバー}; ポート = 3306; データベース = 67918; オプション = 16384
set conn=server.createobject(adodb.connection)
conn.CursorLocation=3
conn.open strconnection