1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > vb mysql查询很慢_VB ODBC方式更新MYSQL数据库表相当相当慢!该怎么处理

vb mysql查询很慢_VB ODBC方式更新MYSQL数据库表相当相当慢!该怎么处理

时间:2019-09-02 18:47:53

相关推荐

vb mysql查询很慢_VB ODBC方式更新MYSQL数据库表相当相当慢!该怎么处理

VB ODBC方式更新mysql数据库表相当相当慢!!

我用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 mand

Dim mysql_ConnStr As String

mysql_ConnStr = "DRIVER={MySQL ODBC 3.51 Driver};" & _

"SERVER=" & "localhost" & ";" & _

"DATABASE=" & "test" & ";" & _

"UID=" & "root" & ";PWD=" & ";" & _

"OPTION=3;stmt=SET NAMES GB2312"

mysql_cnn.Open mysql_ConnStr

mysqlcmd.ActiveConnection = mysql_cnn

record_set.Open "select * from my_list_tbl where DLR=-1 AND SLR<>-1 ORDER BY my_list_tbl.time_id ", mysql_cnn, adOpenForwardOnly, adLockOptimistic

session_id = 1

Do Until record_set.EOF

record_set.Fields(19) = session_id '更新session_id 字段

session_id = session_id + 1

record_set.MoveNext

Loop

record_set.Close

mysql_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-connector-odbc-5[1].1.5-win32.msi这个驱动程序,没有发现你说的那种问题。

------解决方案--------------------

没有看到记录,假设F1唯一

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;

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。