虽然楼主是更新 *** 作,但肯定是要首先进行查询定位的。而如果一个sql查询,第一次执行后,数据库一般不会马上释放这个查询的内存结果集,甚至另外一个sql查询执行后,也会被缓存起来。可以缓存多少和查询结果,依赖于内存的大小。数据库一般会最大限度的缓存多个查询结果,数据库会自动调整释放旧的缓存,为新的缓存提供空间,所以数据库(如SQL Server)经常显示占用很大内存。
然后,如果有人执行查询,数据库首先检查有缓存中相同的,有的话,省略查询过程,很快输出缓存中的数据给用户;如果没有,才进行新的查询。
楼主可以试试时增加一个Where条件,每次执行时,改变一下where条件,比较一下速度。
楼上讲的是VB2005的连接方法,不知道你用的是什么版本的VB,我给你一个VB6.0的连接方法吧先在本机上安装最新的ODBC CONNECTER/mysql
无需设置ODBC,就可以使用.
注意MYSQL的帐户登录是根据主机的,设置好MYSQL的帐户后再做测试.
测试代码:
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim fld As ADODB.Field
Dim sql As String
'connect to MySQL server using MySQL ODBC 3.51 Driver
Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}" _
&"SERVER=192.168.0.1" _
&" DATABASE=db_name" _
&"UID=usernamePWD=passwordOPTION=3"
conn.Open
'create table
conn.Execute "DROP TABLE IF EXISTS my_ado"
conn.Execute "CREATE TABLE my_ado(id int not null primary key, name varchar(20)," _
&"txt text, dt date, tm time, ts timestamp)"
'direct insert
conn.Execute "INSERT INTO my_ado(id,name,txt) values(1,100,'venu')"
conn.Execute "INSERT INTO my_ado(id,name,txt) values(2,200,'MySQL')"
conn.Execute "INSERT INTO my_ado(id,name,txt) values(3,300,'Delete')"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer
'fetch the initial table ..
rs.Open "SELECT * FROM my_ado", conn
Debug.Print rs.RecordCount
rs.MoveFirst
Debug.Print String(50, "-") &"Initial my_ado Result Set " &String(50, "-")
For Each fld In rs.Fields
Debug.Print fld.name,
Next
Debug.Print
Do Until rs.EOF
For Each fld In rs.Fields
Debug.Print fld.value,
Next
rs.MoveNext
Debug.Print
Loop
rs.Close
conn.Close
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)