方法一、尽量使用复杂的sql来代替简单的一堆 sql.
同样的事务,一个复杂的sql完成的效率高于一堆简单sql完成的效率。有多个查询时,要善于使用join。
ors=oconn.execute("select * from books")
while not ors.eof
strsql = "select * from authors where authorid="&ors("authorid") ors2=oconn.execute(strsql)
response.write ors("title")&">>"&ors2("name")&"
&q uot;
ors.movenext()
wend
要比下面的代码慢:
strsql="select books.title,authors.name from books join authors on authors.authorid=books.authorid"
ors=oconn.execute(strsql)
while not ors.eof
response.write ors("title")&">>"&ors("name")&"
&qu ot;
ors.movenext()
wend
方法二、尽量避免使用可更新 recordset
ors=oconn.execute("select * from authors where authorid=17",3,3)
ors("name")="darkman"
ors.update()
要比下面的代码慢:
strsql = "update authors set name='darkman' where authorid=17"
oconn.execute strsql
方法三、更新数据库时,尽量采用批处 理更新
将所有的sql组成一个大的批处理sql,并一次运行;这比一个一个地更新数据要有效率得多。这样也更加满足你进行事务处理 的需要:
strsql=""
strsql=strsql&"set xact_abort on\n";
strsql=strsql&"begin transaction\n";
strsql=strsql&"insert into orders(ordid,custid,orddat) values('9999','1234',getdate())\n";
strsql=strsql&"insert into orderrows(ordid,ordrow,item,qty) values('9999','01','g4385',5)\n";
strsql=strsql&"insert into orderrows(ordid,ordrow,item,qty) values('9999','02','g4726',1)\n";
strsql=strsql&"commit transaction\n";
strsql=strsql&"set xact_abort off\n";
oconn.execute(strsql);
其中,set xact_abort off 语句告诉sql server,如果下面的事务处理过程中,如果遇到错误,就取消已经完成的事务。
方法四、数据库索引
那些将在where子句中出现的字段,你应该首先考虑建立索引;那些需要排序的字段,也应该在考虑之列 。
在ms access中建立索引的方法:在access里面选择需要索引的表,点击“设计”,然后设置相应字段的索引.
在ms sql server中建立索引的方法:在sql server管理器中,选择相应的表,然后“设计表”,点击右键,选择“properties”,选择“indexes/keys”
方法五、避免使text字段太大
当字符串的值大小不固定时,用varchar比用char的效果要好 些。我曾经看到一个例子程序,字段被定义为text(255),但是他的取值经常只有20个字符。这个数据表有50k个记录,从而使这个数据库很大,大的数据库必然较慢。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器