[经验]渚薰的ASP畅谈(三)怎样提高ADO的性能☆☆☆
- 我相信,大多数ASP程序员,并不会去学ADO这一门技术(甚至还有人懒的去学Tranc-SQL),因为ASP教程中的那部分ADO内容,已经足够应付ASP的数据库访问了。但是,ADO并不是ASP的附属产品。其强大的功能和内涵远远超过了ASP。不要抱怨为什么微软的东西那么复杂,关键是简单的东西,它一定不好。众多ASP教程里,ADO的内容,只是所有ADO技术中的小小一部分,甚至不会涉及到各种ADO数据库访问技巧的比较(具我所看的ASP教程里,每一本都是一种访问技巧讲到底)。所以,首先我要推荐大家去看看《ADO数据库访问技术》这一类的书。它会帮助你,深入的了解ADO,以便提高你在ASP中的应用。
- 在ASP这样的Web脚本程序里,我们到底关心ADO的什么?当然是速度了!网络时代,速度优先嘛。还记得移动“打击”联通的那一段“猥琐”情节吗?“幸好我提前一周就发了 !”所以,当务之急,是提高ADO访问数据库的速度,甚至是性能。但是,ADO不就摆在眼前嘛?我们又不能改写ADO的内核,怎样才能提高呢?
- 性能的提高
- 尽可能早的断开数据库链接。特别是Connection链接。好在,IIS给Connection链接配备了一个默认的连接池,才使得用户不用每次打开页面就请求数据库的连接。要知道,链接数据库以及维持链接的开销远比数据库查询的开销要大!
- 速度的提高
- 用Connection或Command的Execute方法来执行不需要返回RecordSet对象的SQL语句,这类SQL语句就如INSERT,UPDATE,DELETE等。而SELECT等需要返回RecordSet对象的SQL语句,则直接用RecordSet对象的实例来执行SQL语句。
- 操作临时表时,把Connection的CursorLocation属性设置成Client,并把RecordSet对象的LockType属性设置成adOpenStatic。
- RecordSet的CursorType属性要符合应用程序的需要。因为显然adOpenForwardOnly是最快的数据库访问方式 ,能用它的时候就用它,不要总是用adOpenKeySet。
- Select语句中的字段名,一般情况下需要用到多少就显示的列出多少。
- 尽可能不要进行表连接查询,最好在数据库中预先建立好视图。
- 复杂的参数化查询尽可能地用存储过程来达到数据库查询的目的。
- 更多的ADO细节内容,希望大家能够参看更加权威的资料以获得知识。
|