Ambiente: winxp sp2, mysql5.0.18, tabela de driver mysqlodbc 3.51 usa mecanismo myisam. acessar 2003
Lugares diferentes:
1. Ao inserir dados, o mysql deve tentar usar a instrução insert into e evitar usar rs.addnew. Se você precisar usá-lo, você deve definir conn.CursorLocation=3 primeiro, caso contrário, um erro será definitivamente relatado, e eu descobri. que usar insert é mais rápido que addnew 3 vezes. Além disso, se você usar rs.addnew ao rs.update, não poderá obter imediatamente o valor de rs (id) no acesso.
2. Comparação com acesso:
Com a mesma estrutura de tabela, ao usar insert para inserir 20.000 dados, o MySQL leva 7,5 segundos, e se você usar rs.addnew, leva 24 segundos! No acesso, usar insert demorou 19,8 segundos, mas rs.addnew demorou apenas 2,8 segundos!
Comparação de consultas: a consulta de acesso a 400.000 dados levou 12 segundos e a consulta MySQL levou 14 segundos, o que é um pouco mais lento.
Resumo: De modo geral, a velocidade de inserção do acesso é cerca de três vezes mais rápida que a do mysql. Ao consultar dados, se a quantidade de dados for relativamente pequena, o acesso será cerca de 2 vezes mais rápido que o mysql. No entanto, quando a quantidade de dados for grande, a velocidade de consulta do mysql não muda muito, mas o acesso cai significativamente.
Claro, o mysql deve ser mais rápido que o access, acho que o problema está no driver odbc, e o driver de acesso usa ole. A Microsoft fez muitas otimizações para ele, então neste teste o mysql foi prejudicado! Quanto ao desempenho de simultaneidade, não testei, mas acho que o acesso deveria ser bem pior que o mysql.
Se você quiser usar
rs.pagecount
rs.pagesize
rs.AbsolutePage
rs.recordcount
Para tais propriedades, você deve primeiro conn.CursorLocation=3
Caso contrário, nenhum dos atributos acima poderá ser usado.
Além disso, para evitar a inserção de caracteres ilegíveis e erros chineses, você deve imediatamente após conn.open: conn.Execute (SET NAMES 'gb2312')
Caso contrário, o erro de inserção ocorrerá definitivamente e o código ficará distorcido.
Método de conexão:
'Conectar usando DNS do sistema:
strconnection=dsn=mysql OPTION=16384;driver={driver mysql odbc 3.51};server=127.0.0.1;uid=root;pwd=67918;database=test
'Concatenar diretamente com strings:
'strconnection=Driver={driver mysql odbc 3.51}; Servidor=localhost Port=3306;
definir conn=server.createobject(adodb.connection)
conn.CursorLocation=3
conn.open strconnection