asp措施执行数据库的效率晋升发起

许多网友很是不喜欢用ASP来编程,他们老是诉苦说ASP措施太慢,效率太低。更但愿用PHP,JSP等来写措施。其实不能从  "认为"  这个角度来看问题  ,而应该从实际中看问题,ASP真的很慢的吗,那么微软的站为何用ASP也不慢呢?PHP真的很快吗,其实它也仍然是表明性的语言。只不外在Linux下的团结较量好而以。JSP的开拓也不会简朴到那里,并且要通过JDBC-ODBC桥才气毗连ACCESS库等,这种环境下效率也不高。 

其实,三种语言各有特点,就是优,缺点。作为一个措施员不该该老是怪语言欠好,而更应该垂青的是本身的技能。所以本日我们不会较量这三种WEB语言到底谁好,谁坏,而是讲授如何提高措施的执行效率问题。 

第一篇:SQL语句篇 

  WEB措施中最引人注目标应该是数据库操纵。本日我们就来讲讲如何提高SQL语句的效率。假设有一张布局如下的users的表格,个中ID为主键。已经有10000笔记录。 

ID  int  4  自增 
Name  char  10  //姓名 
Age  int  2  //年数 
Sex  char  2  //性别  默认值为  "男" 
Address  nvchar  255  //地点 
Cash  int  4  //积分 
Photo  char  2  //是否有照片  默认值为  "没有" 
PhotoUrl  nvchar  255  //照片路径    

   首页我们讲讲关于数据库中表和字段的问题,对付WEB举办的数据库工具中,自然表的个数越少,越好;表中的安段个数越少,越好;字段中所占的字节是越少,越好。 
  譬喻Users表中sex的字段完全可以用bit字段,举办0或1的操纵,可以界说  "0"为男性,而  "1"为女性,这样就可以淘汰char所占的字节数,这样记录一多照旧相当可观的。 
  再譬喻表的Photo的字段基础可以去掉,这样更能淘汰字段,从而加速读取的速度。因为Photo字段只是用来判定用户是否有照片,而我们安详可以用PhotoUrl字段来判定。如PhotoUrl字段的值假如为空,就暗示此用户没有照片,不然假如有的话,PhotoUrl字段必然是有值的,同样可以完成相应的成果。 
 
譬喻我们要显示出前10个用户名的记录。有的网友会举办如下的操纵:  

I=0 Set rs=conn.execute("select * from users") Do while not rs.eof and I<=10 I=I+1 Response.write("name")&"<br>" Rs.movenext Loop

  这段代码是可以完成上面的成果,但是假如然正的放到措施中,效率就太低了。因为下面的措施一下但是读出了所有的记录,即10000条啊,可我们只需要10条啊,假如这样的话是不是太挥霍啊,虽然我们可以利用Ms  SQL中的top呼吁来完成这个求,或是Mysql中的limit呼吁。 

别的,我们只需要用户名的字段显示出来,而其他的基础不需要,而此网友却用了  "select  *"  的呼吁,一下子读了所有字段的值,这长短常没有须要的,并且在字段许多的环境下,更是加重了执行的承担。所以说应该利用  "select  字段"来举办相应的操纵。所以上面的措施可以修改为: 

set rs=conn.execute("select top 10 name from users") do while not rs.eof response.write rs("name")&"<br>" rs.movenext loop

这样的话,在记录许多的环境下,操纵会快出许多。 
别的在操纵竣事后,不需要再举办操纵时,必然要封锁数据库的毗连。 

Set  rs=nothing 
Set  conn=nothing 

有的网友说,本来是这样啊,那他用下面的代码来查察Users表中就可以用下面的代码来完成了。 

Set rs=conn.execute("select name from users") I=0 Do while not rs.eof I=I+1 Rs.movenext loop set rs=nothing

其实,这段代码的效率仍然长短常低下的。为了知道表中有几多笔记录,而遍历所有记录,长短常不值的。我们完全可以用下面的代码来实现:  

set  rs=conn.execute("select  count(id)  as  num  from  users") 
I=rs("num") 
Set  rs=nothing  

是不是很简朴呢,其实count()呼吁就可以统计出你所要查询的记录数,用where加上条件也可以。 
假如一位用户对数据库一次要举办若干个操纵的话,我们还要留意在操纵后锁定表,用lock操纵完成后解锁的步调,用unlock,因为假如一位用户在操纵数据库,另一位用户也正在操纵,容易造成数据的杂乱,甚至使数据插错记录号,发生很是严重的效果。 
在ASP的操纵中,对付数据库的操纵,别离有两种要领,一种是直接引用conn.execute流,另一种是利用rs.open操纵。两种操纵各有其长处,而在MS  SQL操纵中,前者利用的较量多,因为它是一种单一流的操纵,一般不能利用rs.addnew或rs.update等,因为此种操纵要打开表的写操纵才行,如rs.open  sql,conn,3,3,后头的3就暗示可以执行写操纵,而1暗示是读操纵。 
最后,应该要尽大概多的利用where条件,把多个语句合在一起。譬喻:显示按积分的坎坷分列的最前面的10位男性用户的用户名。 

看看一位网友下面的代码: 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdfjs.html