解决方案 »
- VBA中簡單問題﹐請教高手﹐急﹗﹗
- 如何清除打印机缓存呀,我用VB代码结束打印任何和临时文件后,再次打印时,总会先把打印机缓存中的先打出来,如何清呀?
- [求助]报表打印问题?
- excel 2007 的 xlsm 宏文件 如何封装成 exe 格式?
- 我要做一个通讯录,大家帮我想应该完成那些功能?拜托大家想想。
- 请帮忙分析一段代码
- 关于关机函数的一个问题!
- 水晶报表的问题,请高手赐教
- 在VB程序里如何建立远程Server上的目录在本地的映射?又如何对其进行操作?(送分了)
- 为什么用VB写程序在2000,xp,me下用好好的在98下会出现缺少.dll文件的字样!
- vb怎么获取variant中的字符串类型的值
- 如何让text文本框显示数据库内容?
rs.Open SQL, Conn, 1, 1试试看,不过我觉得不是你的数据库操作问题
注释掉的内容为:
Set rs = CreateObject("ADODB.RecordSet")
SQL = "select * from users where ID=" & ID
rs.Open SQL, Conn, 1, 3
If Not rs.EOF And Not rs.BOF Then
If rs("Time1") >= 60 Then
rs("Time1") = rs("Time1") - 50
rs("D1") = rs("D1") + 1
rs("D2") = rs("D2") + 2
Else
rs("Time1") = rs("Time1") + 10
End If
End If
rs.Close
Set rs = Nothing这里如何修改可以提高性能?
现在服务端功能上正常,已经正常使用了几个月了,但服务端CPU占用率一直很高,用一个用户的话说“这软件也太差了吧,才100多人在线,服务端压力就这么大,明显算法有问题啊。”
SQL = "select * from users where ID=" & ID
rs.Open SQL, Conn, 1, 3
If Not rs.EOF And Not rs.BOF Then
If rs("Time1") >= 60 Then
rs("Time1") = rs("Time1") - 50
rs("D1") = rs("D1") + 1
rs("D2") = rs("D2") + 2
Else
rs("Time1") = rs("Time1") + 10
End If
End If
rs.Update
rs.Close
Set rs = Nothing
我对SQL的安全性没有研究,不敢用SQL啊
您想提高效率应注意以下几点:
1、建立数据库时尽量不要使用中文作为字段名,使用纯字母。
2、数据类型要配置好。
3、如要使用网络时,尽量不要使用ACCESS做为数据库,本身ACCESS数据库只针对单机使用。
Private Sub DB3()
timeA = Now()
Call MyDB
Set rs = CreateObject("ADODB.RecordSet")
For i = 0 To 10000
SQL = "select * from users where Sid=10001"
rs.Open SQL, Conn, 1, 3
If Not rs.EOF And Not rs.BOF Then
rs("Ttime") = rs("Ttime") + 1
rs("D") = rs("D") + 1
rs("B") = rs("B") + 1
End If
rs.Update
rs.Close
Next i
Set rs = Nothing
Conn.Close
Set Conn = Nothing
timeB = Now()
s = DateDiff("s", timeA, timeB)
Text3.Text = s
End Sub
'存储过程方式10000次,21秒Private Sub DB4()
timeA = Now()
Call MyDB
Set rs = CreateObject("ADODB.RecordSet")
For i = 0 To 10000
SQL = "select * from users where Sid=10001"
Set rs = Conn.Execute(SQL)
Ttime = rs("Ttime") + 1
D = rs("D") + 1
B = rs("B") + 1
SQL = "Update users set Ttime=" & Ttime & ",D=" & D & ",B=" & B & " where Sid=10001"
Set rs = Conn.Execute(SQL)
Next i
Set rs = Nothing
Conn.Close
Set Conn = Nothing
timeB = Now()
s = DateDiff("s", timeA, timeB)
Text4.Text = s
End Sub
Execute方式10000次,14秒
改用Conn.Execute方式后CPU占用率明显降低了,数据库字段名全部都是字母,数据类型全部最小化配置了,麻烦各位大大们再给点建议,怎样做还可以提高性能?