Среда: winxp sp2, mysql5.0.18, таблица драйверов mysqlodbc 3.51 использует движок myisam. доступ 2003
Разные места:
1. При вставке данных MySQL должен попытаться использовать оператор вставки в и избегать использования rs.addnew. Если необходимо его использовать, сначала следует установить conn.CursorLocation=3, в противном случае обязательно будет сообщено об ошибке. Я обнаружил, что использование Insert происходит примерно в 3 раза быстрее, чем addnew. Кроме того, если вы используете rs.addnew при rs.update, вы не сможете сразу получить значение rs(id) в доступе.
2. Сравнение с доступом:
При той же структуре таблицы при использовании вставки для вставки 20 000 фрагментов данных MySQL занимает 7,5 секунды, а при использовании rs.addnew — 24 секунды! В доступе использование вставки заняло 19,8 секунды, а rs.addnew — всего 2,8 секунды!
Сравнение запросов: запрос доступа к 400 000 фрагментам данных занял 12 секунд, запрос MySQL занял 14 секунд, что немного медленнее.
Резюме: Вообще говоря, скорость доступа к вставке примерно в три раза выше, чем у MySQL. При запросе данных, если объем данных относительно небольшой, доступ происходит примерно в 2 раза быстрее, чем mysql. Однако при большом объеме данных скорость запроса mysql не сильно меняется, но доступ значительно падает.
Конечно, MySQL должен быть быстрее, чем доступ. Я думаю, проблема заключается в его драйвере odbc, а драйвер доступа использует ole. Microsoft провела для него множество оптимизаций, поэтому в этом тесте MySQL был обижен! Что касается производительности параллелизма, я ее не проверял, но думаю, что доступ должен быть намного хуже, чем у mysql.
Если вы хотите использовать
RS.pagecount
rs.pagesize
rs.AbsolutePage
rs.recordcount
Для таких свойств необходимо сначала 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; Socket =; База данных = тест; Pwd = 67918; Опция = 16384
set conn=server.createobject(adodb.connection)
conn.CursorLocation=3
conn.open strconnection