Entorno: winxp sp2, mysql5.0.18, la tabla de controladores mysqlodbc 3.51 utiliza el motor myisam. acceso 2003
Diferentes lugares:
1. Al insertar datos, mysql debe intentar usar la instrucción insertar en y evitar usar rs.addnew. Si es necesario usarlo, primero debe configurar conn.CursorLocation=3. De lo contrario, definitivamente se informará un error. Descubrí que usar insertar es aproximadamente más rápido que agregar nuevo 3 veces. Además, si usa rs.addnew cuando rs.update, no podrá obtener inmediatamente el valor de rs (id) en el acceso.
2. Comparación con el acceso:
Con la misma estructura de tabla, cuando se usa insert para insertar 20.000 datos, MySQL tarda 7,5 segundos, y si usa rs.addnew, ¡tarda 24 segundos! En acceso, usar insert tomó 19,8 segundos, ¡pero rs.addnew solo tomó 2,8 segundos!
Comparación de consultas: la consulta de acceso a 400.000 datos tomó 12 segundos, la consulta MySQL tomó 14 segundos, lo cual es un poco más lento.
Resumen: en términos generales, la velocidad de inserción y acceso es aproximadamente tres veces más rápida que la de mysql. Al consultar datos, si la cantidad de datos es relativamente pequeña, el acceso es aproximadamente 2 veces más rápido que mysql. Sin embargo, cuando la cantidad de datos es grande, la velocidad de consulta de mysql no cambia mucho, pero el acceso disminuye significativamente.
Por supuesto, mysql debería ser más rápido que el acceso. Supongo que el problema radica en su controlador odbc, y el controlador de acceso usa ole. Microsoft ha realizado muchas optimizaciones, por lo que en esta prueba, mysql resultó incorrecto. En cuanto al rendimiento de concurrencia, no lo he probado, pero creo que el acceso debería ser mucho peor que mysql.
Si quieres usar
rs.recuento de páginas
rs.tamaño de página
rs.AbsolutePage
rs.recordcount
Para tales propiedades, primero debe conn.CursorLocation=3
De lo contrario, no se podrá utilizar ninguno de los atributos anteriores.
Además, para evitar que se inserten caracteres confusos y errores chinos, inmediatamente después de conn.open debe: conn.Execute (SET NAMES 'gb2312')
De lo contrario, definitivamente se producirá un error de inserción y el código será confuso.
Método de conexión:
'Conéctese usando el DNS del sistema:
strconnection=dsn=mysql; OPCIÓN=16384;driver={controlador mysql odbc 3.51};servidor=127.0.0.1;uid=root;pwd=67918;base de datos=prueba
'Concatenar directamente con cadenas:
'strconnection=Driver={controlador mysql odbc 3.51}; Servidor=localhost; Puerto=3306; Opción=16384
establecer conexión=servidor.createobject(adodb.conexión)
conexión.CursorLocation=3
conn.open strconnection