如何提高ASP访问数据库的速度

如题所述

第1个回答  2018-01-08
技巧之一:提高使用Request集合的效率

访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。
例如将代码写成下面的形式以加快脚本引擎处理速度:
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("LastName")
If Len(strTitle) Then strTitle=strTitle & " "
If strFirstName="" Then strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & ". " & strLastName
Else
strFullName=strTitle & strFirstName & " " & strLastName
End If

技巧之二:直接访问适当的集合
如果不是别无选择,否则不要使用strPage=Request("page")的这样的形式来获取参数,因为这将按顺序搜索全部的集合—QueryString、Form、Cookies、ClientCertificate、ServerVarible直到发现第一个匹配值的名称。这样做比直接访问适当的集合效率低,并且是不安全的,除非能绝对保证这个值不会出现在另外一个集合中。
例如,可能希望搜索满足客户请求的WEB服务器名称,这通过出现在每个查询中的Request.ServerVarables集合中寻找“SERVER_NAME”来实现。然而,假如其他的集合也包含名为“SERVER_NAME”的值(键名不区分大小写),当使用Request("server_Name")时,就会得到错误的结果。总而言之,应尽可能直接访问适当的集合。

技巧之三:在费时操作前使用Response.IsClientConnected属性
使用Response.IsClientConnected是观察用户是否仍连到服务器并正在载入ASP创建的网页的有用方式。如果用户断开连接或停止下载,我们就不用再浪费服务器的资源创建网页,因为缓冲区内容将被IIS丢弃。所以,对那些需要大量时间计算或资源使用较多的网页来说,值得在每一阶段都检查游览者是否已离线:
…… Code to create first part of the page
If Response.IsClientConnected Then
Response.Flush
Else
Response.End
End If
…… Code to create next part of page

技巧之四:优化ASP中的ADO操作
通常面言,数据构成了WEB站点的实际内容。所以,优化ADO操作以加速ASP代码执行,十分有用:
a. 仅选择所需的列:当打开ADO记录集时,除非需要获得所有的列,否则不应自动地使用表名(即SELECT
*)。使用单独的列意味着将减少发送到服务器或从服务器取出的数据量。即使需要使用全部列,单独地命名每个列也会获得最佳的性能,因为服务器不必再解释这些列的名字。
b. 尽可能的使用存储过程。存储过程是预先编译的程序,含有一个已经准备好的执行计划,所以比SQL语句执行更快。
c. 使用适当的光标和锁定模式。如果所做的全部工作只是从记录集中读取数据,并将其显示在屏幕上,那么就使用缺省的只能前移、只读的记录集。ADO用来维护记录和锁定的细节的工作越少,执行的性能就越高。
d. 使用对象变量。当遍历记录集时一个肯定能提高性能的方法是使用对象变量指向集合中的成员。例如:
复制代码 代码如下:

While Not RsGc.EOF
Response.Write "工程名称:" & RsGc("GcMC") & "(工程代码:" & RsGc("GcCode") & ")"
RsGc.MoveNext
Wend

可以用改写为下面的代码以加快执行:

set GcMc=RsGc("GcMc")

set GcCode=RsGc("GcCode")
While Not rsGc.EOF Response.Write "工程名称:" & GcMc & "(工程代码:" & GcCode & ")"
RsGc.MoveNext
Wend

新的代码建立了对象变量的引用,所以可以使用对象变量而不是实际的变量,这意味着脚本引擎的工作减少了,因为在集合中进行索引的次数变少了。
技巧五:不要混用脚本引擎
我们知道,ASP页面中既可以使用VBScript,也可以使用JScript。但是在同一个页面上同时使用JScript和VBScript则是不可取的。因为服务器必须实例化并尝试缓存两个(而不是一个)脚本引擎,这在一定程度上增加了系统负担。因此,从性能上考虑,不应在同一页面中混用多种脚本引擎。

如何提高ASP访问数据库的速度
技巧之一:提高使用Request集合的效率 访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。例如将代码写成下面的形式以加快脚本引...

asp.net查询数据库大数据卡的要死有什么方法决解
1、将你查询的SQL放到数据库中执行看需要用多少时间,如果时间比较长的话,首先要从你的查询进行优化,比如说像楼上说的是不是查询了太多不需要的数据,有没有分页,还有就是查询条件的问题,是不是用了太多嵌套查询,是不是应该给查询频繁的字段加索引,是不是考虑用存储过程替代SQL语句 2、检查不绑...

ASP慢慢连接MySQL说实话有点困难asp连接mysql慢
ASP 和 MySQL 的连接字符串 连接到 MySQL 数据库需要使用连接字符串。连接字符串包含数据库名称、服务器名称、用户名和密码等连接信息。它采用特定格式的文本字符串。以下是标准格式:Provider=MySQLProv; Data Source=myMySQLDB; User Id=myUsername; Password=myPassword;其中,MySQLProv 是指定提供程序的...

asp读取access表时,速度非常慢。
1:你的数据太多了,查询自然要慢,可以用别的数据库 2:你说的读取速度慢,你是按显示出来的速度来算的吧,数据记录多会有影响,但是你程序循环的优化也有很大的关系。你可以查一查

怎样优化ASP网站程序
有的时候完成一个读取操作,使用SQL语句和存储过程同样可以完成,但是使用存储过程将会大大加快完成读取操作的速度,也就提高了你的ASP程序运行的速度。3. 注意你的游标使用方法 如果你仅仅是对一个table进行读取操作,那么请你使用forward-only,read-only游标,因为这种游标读取数据库是最为快速的,尤其是...

asp网站经常访问不了数据库
建议你在调用数据库时,只用一小段程序,完成数据库操作(包括打开、调用数据、关闭数据库这一系列操作)之后,再进行页面输出;特别是对于只从数据库中取出记录,而不进行数据库修改或者删除的操作,可以把取得的值记录在参数(放在内存)中,关闭数据库之后再进行页面输出。而对于大批量的记录列表,也是...

ASP程序运行速度变慢且时不时报数据库连接失败,刷新一下又好了,请问...
跟服务器和数据连接的驱动程序有关,你把代码贴出来看看,或者把驱动程序换成新的:Conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("data\/database.mdb")

ASP用ODBC连接Access数据库查询突然变慢
或者你的数据可比较大!同时加载的东西过多!在与你数据库同目录里会产生一个.ldb后缀的文件!一般情况都会有这个文件,但是这个文件太大就会导致链接过慢,甚至链接不上,你重启后,大量链接关闭,.ldb后缀的文件就没了!所以,又能连接了!建议数据库不要超过30M ,如果需要的话换成SQL的比较好~...

用的是asp程序 access数据库。实现一个功能,但是运算很慢,是否能优化一...
< conn.execute "update guestsn Set b=a "Response.Write "<SCRIPT LANGUAGE='JavaScript'>"Response.Write "alert('复制成功!');"Response.Write "history.go(-1);"Response.Write "<\/SCRIPT>"> 就这样。完事

在ASP中使用数据库
你可以通过使用数据源名(DSN)或者通过在你的脚本语言中直接使用一个DSN-less连接的方法来连接和打开数据库。创建一个数据源名(DSN)你可以通过在控制面板中给你的数据库建立一个系统DSN来使你的数据库可以在ASP中连接使用。你可以在你的本地计算机上建立若干个DSN,每个DSN对应你使用的不同的数据库。在建立完DSN...

相似回答