如何做才能提高读取ACCESS数据库数据的速度?(已解决)
本帖最后由 user3000 于 2011-7-28 20:59 编辑最近编写个网吧自用的游戏菜单,已经接近尾声,但发现了一个大问题:
直读网维数据库的游戏数据时,游戏菜单启动相当的慢,需要30秒到40多秒钟!
网维用的是access数据库,读取用的是论坛的自定义函数:_accessQueryLike
也试过开新程序,仅仅读取各分类的游戏数据到(内存)数组中,总共时间也要10秒左右!
但试过深蓝的网吧游戏菜单,如果是直读网维,启动并加载游戏数据也就是一两秒钟内的事啊?
如何做才能提高读取ACCESS数据库数据的速度?
传说中的“多进程”代替“多线程”?
请列位指条明路吧!
该问题已解决,但我无法选择到分类“已解决”? 我发现那个UDF,每一次ACCESS操作都执行一次 _DBOPEN,不慢才有鬼。 我发现那个UDF,每一次ACCESS操作都执行一次,不慢才有鬼。
supersp 发表于 2011-7-27 20:18 http://www.autoitx.com/images/common/back.gif
您的意思修改一下,只运行一次 _DBOPEN会大大提升效率不成? $addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &$mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS =ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open ("Select "&$t & " From " & $adTable ) ;$t : 表示一个连接$adtable :表示的是这个表的名称
while Not $RS.eof And Not $RS.bof
if @error =1 Then ExitLoop
GUICtrlCreateListViewItem ( $RS.Fields (0).value&"|"& $RS.Fields (1).value&"|"& $RS.Fields (2).value&"|"& $RS.Fields (3).value&"|"& $RS.Fields (4).value&"|"& $RS.Fields (5).value&"|"& $RS.Fields (6).value&"|"& $RS.Fields (7).value&"|"& $RS.Fields (8).value&"|"& $RS.Fields (9).value&"|"& $RS.Fields (10).value,$ListView1 )
; MsgBox(0, "", $RS.Fields (1).value);显示表第一个数据
$rs.movenext
WEnd
$rs.close
$addfld.Close 今天研究了半天的UDF,把它修改一下,已经达到自己的目的。类似4楼的做法吧。
就是按自己实际需要提取相应的字段值,而不是遍历全部的字段。
还可以把字段值重新排序后再输出!比如,返回值设为:$RS.Fields (5).value & $RS.Fields (0).value
感谢2楼给予的“妙想”和思路!
谢谢4楼的朋友也来帮忙!尽管我是现在才有时间并看到这个回复的! 最的发表心得:
对于我们这样的菜鸟的启示:不要过于迷信UDF的功能! 学习了,也遇到过这样的问题 学习了,也遇到过这样的问题
页:
[1]