我用VB写了一个程序,通过VB用ODBC方式访问数据库,对数据进行处理。以前后台我用的是ACCESS数据库,更新速度相当快!
现在后台改用MYSQL了,同样还是用ODBC方式访问后台MYSQL数据库,且处理同一批数据,我发现后台改用MYSQL更新数据速度相当相当慢!!!计算机负荷很高,在任务管理器中发现一个叫 "mysqld-nt.exe"进程负荷在数据更新期间一直在50%左右 ,我的CPU 是P4 3.2GHz的双核INTEL CPU ,内存4Gbytes,硬件配置应当没有问题,而且之前用ACCESS处理数据,相当快,20万条数据,基本上6分钟搞定了,而改用MYSQL后1小时还没有处理完呢,CPU负荷相当高,慢的实在不可接受,真的是太慢了。注:ACCES 和 MYSQL中的后台表我均没有建索引。请高手指教,非常感谢!!相关信息:MYSQL版本:MySQL Server 5.0 相关VB代码:Dim session_id As Double
Dim mysql_cnn As New ADODB.Connection
Dim record_set As New ADODB.Recordset
Set mysqlcmd = New ADODB.Command
Dim mysql_ConnStr As Stringmysql_ConnStr = "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=" & "localhost" & ";" & _
"DATABASE=" & "test" & ";" & _
"UID=" & "root" & ";PWD=" & ";" & _
"OPTION=3;stmt=SET NAMES GB2312"mysql_cnn.Open mysql_ConnStrmysqlcmd.ActiveConnection = mysql_cnnrecord_set.Open "select * from my_list_tbl where DLR=-1 AND SLR<>-1 ORDER BY my_list_tbl.time_id ", mysql_cnn, adOpenForwardOnly, adLockOptimisticsession_id = 1Do Until record_set.EOFrecord_set.Fields(19) = session_id '更新session_id 字段session_id = session_id + 1record_set.MoveNextLooprecord_set.Closemysql_cnn.Close本程序段的功能没有问题,就是更新数据相当慢!!!MYSQL 表定义:CREATE TABLE `my_list_tbl` (
`f1` varchar(25) default NULL,
`f2` varchar(20) default NULL,
`f3` varchar(20) default NULL,
`f4` varchar(20) default NULL,
`f5` varchar(20) default NULL,
`DLR` bigint(20) default '-1',
`SLR` bigint(20) default '-1',
`f8` varchar(20) default NULL,
`f9` varchar(20) default NULL,
`f10` varchar(20) default NULL,
`f11` varchar(20) default NULL,
`f12` varchar(20) default NULL,
`f13` varchar(30) default NULL,
`f14` varchar(30) default NULL,
`f15` varchar(80) default NULL,
`f16` varchar(10) default NULL,
`f17` varchar(50) default NULL,
`time_id` bigint(20) default NULL,
`f19` bigint(20) default NULL,
`session_id` bigint(20) default NULL,
`f21` tinyint(4) default NULL,
`f22` tinyint(4) default NULL,
`f23` double(20,0) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
解决方案 »
- mysql数据库中记录条数超过了bigint的最大长度,自增编号会怎么样
- 短索引如何建立?
- Mysql建表,怎么设置一个字段的默认值是当前年月"YYYYMM"
- 合并多行字符串产生的问题 请刚才回答我问题的专家进来 给你补分
- 表设计问题,陷入死循环了,帮帮忙啊
- 急求一个没有用户名和密码的连接字符串如何写?(getConnection("????"))
- MySQL中有个set类型,非常迷惑
- phpMyAdmin不支持中文,怎么办啊? HELP!!!!!!
- 数据库报错..求助...
- 请教大家关于 mysql 备份工具innobackupex 的问题
- mysql数据库一会连的上,一会连不上
- 关于数据库合并问题
下载
mysql-connector-odbc-5.1.8-win32.msi 文件大小:2559KB
mysql-connector-odbc-5.1.2-win32.msi 文件大小:4139KB
程序运行还是相当慢,没有任何改观。
mysql-connector-odbc-5.1.8-win32.msi 文件大小:2559KB
mysql-connector-odbc-5.1.2-win32.msi 文件大小:4139KB
程序运行还是相当慢,没有任何改观。
SET @i=1;
UPDATE my_list_tbl a INNER JOIN
(
select *.@i:=@i+1 AS jl from my_list_tbl where DLR=-1 AND SLR<>-1 ORDER BY my_list_tbl.time_id) b
ON a.f1=b.f1
SET a.session_id=b.jl;
更新的数据样本约20万条记录,ODBC方式用Recordset做遍历更新操作,现在用时约:15秒就搞定了,而之前没有主键时,处理1小时还没有处理完啊!,可见主键对于表来说是多么重要啊!ACCESS实际上也是有primary key的,否则处理也会很慢,我又核实了一下,ACCESS中确实也有主键的。
多谢各位!