البيئة: يستخدم جدول التشغيل winxp sp2 وmysql5.0.18 وmysqlodbc 3.51 محرك myisam. الوصول 2003
أماكن مختلفة:
1. عند إدراج البيانات، يجب أن يحاول mysql استخدام الإدراج في العبارة وتجنب استخدام rs.addnew. إذا كان يجب عليك استخدامه، فيجب عليك تعيين conn.CursorLocation=3 أولاً، وإلا فسيتم الإبلاغ عن خطأ، وقد وجدته أن استخدام الإدراج أسرع من addnew 3 مرات. وأيضًا، إذا كنت تستخدم rs.addnew عند تحديث rs.، فلن تتمكن على الفور من الحصول على قيمة rs (id) في الوصول.
2. المقارنة مع الوصول:
باستخدام نفس بنية الجدول، عند استخدام الإدراج لإدراج 20000 قطعة من البيانات، يستغرق MySQL 7.5 ثانية، وإذا كنت تستخدم rs.addnew، فسيستغرق الأمر 24 ثانية! في الوصول، استغرق استخدام الإدراج 19.8 ثانية، لكن rs.addnew استغرق 2.8 ثانية فقط!
مقارنة الاستعلام: استغرق استعلام الوصول إلى 400000 قطعة من البيانات 12 ثانية، واستغرق استعلام MySQL 14 ثانية، وهو أبطأ قليلاً.
ملخص: بشكل عام، سرعة إدخال الوصول أسرع بحوالي ثلاث مرات من سرعة MySQL. عند الاستعلام عن البيانات، إذا كانت كمية البيانات صغيرة نسبيًا، يكون الوصول أسرع بحوالي مرتين من mysql. ومع ذلك، عندما تكون كمية البيانات كبيرة، لا تتغير سرعة الاستعلام في mysql كثيرًا، ولكن ينخفض الوصول بشكل ملحوظ.
بالطبع، يجب أن يكون MySQL أسرع من الوصول، وأعتقد أن المشكلة تكمن في برنامج تشغيل odbc الخاص به، ويستخدم برنامج تشغيل الوصول ole. بالنسبة لأداء التزامن، لم أختبره، لكنني أعتقد أن الوصول يجب أن يكون أسوأ بكثير من MySQL.
إذا كنت تريد استخدام
rs.pagecount
rs.pagesize
rs.AbsolutePage
rs.recordcount
بالنسبة لمثل هذه الخصائص، يجب عليك أولاً conn.CursorLocation=3
وبخلاف ذلك، لا يمكن استخدام أي من السمات المذكورة أعلاه.
أيضًا، لمنع إدراج الأحرف المشوهة والأخطاء الصينية، يجب عليك مباشرة بعد conn.open: conn.Execute (SET NAMES 'gb2312')
وإلا، سيحدث خطأ في الإدراج بالتأكيد وسيتم تشويه الكود.
طريقة الاتصال:
'الاتصال باستخدام نظام DNS:
strconnection=dsn=mysql;
'التسلسل مباشرة مع السلاسل:
'strconnection={mysql odbc 3.51 driver};
تعيين conn=server.createobject(adodb.connection)
conn.CursorLocation=3
conn.open strconnection