惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 热门话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Project Zero
Project Zero
V
Vulnerabilities – Threatpost
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
C
Cisco Blogs
A
Arctic Wolf
月光博客
月光博客
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
量子位
小众软件
小众软件
Latest news
Latest news
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
N
Netflix TechBlog - Medium
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
Y
Y Combinator Blog
P
Proofpoint News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Schneier on Security
D
Docker
Scott Helme
Scott Helme
MyScale Blog
MyScale Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
GbyAI
GbyAI
有赞技术团队
有赞技术团队
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
H
Help Net Security
Simon Willison's Weblog
Simon Willison's Weblog
J
Java Code Geeks
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tenable Blog
B
Blog
Know Your Adversary
Know Your Adversary
IT之家
IT之家

博客园 - .NET初学者俱乐部

给 .net C# 初学者几点建议 软件设计题视频教程下载,不错哟! 地球黑匣子,这个创意怎么样? 在实际开发中碰到的小问题,保存数据时提示:对象必须实现 IConvertible asp.net中使用ajax简单例子 asp.net 版 大学英语四六级、雅思、托福考试系统应用程序实例 spread 7.0 基础知识、程序示例、设置CheckBox、image 格式 C# 操作 Excel 与 C#操作 word 示例大全 asp.net 初学者应用程序示例网 公交车上的艳遇,那对被挤扁了..... 一个 .net 程序员的梦想!大哥们帮帮我好吗? 数据访问优化性能(转载) 如何直接将.aspx页面直接生成静态页面.htm (转载) asp.net初学者 零起点 从入门到精通的网站! 再别康桥 --徐志摩 .NET打包工具怎么注册 .dll文件?? Excel导入SQL 自定义类 一个简单的EXCEL 导入SQL 的例子 大数据量数据库转换程序写后感……
全面优化ADO kinmax(转贴)
.NET初学者俱乐部 · 2007-06-27 · via 博客园 - .NET初学者俱乐部

全面优化ADO         kinmax(转贴)    
       
  关键字           ADO    
       
  出处           http://www_aspsky_net.htm/    
       
   
  1   Connection  
  1.1   Pooling  
              在Web   Application中,常常会出现同时有很多用户同时访问数据库的情况,而且ASP中的对象作用域是页面级的,也就是  
  说,每个页面都要联接和断开数据库,岂不是会很慢?而且每个到SQL   Server数据库的联接会带来37k的系统开销,怎么  
  办?  
                可能有人会想到用Application和Session来解决问题,但是,这是不可取的,如果用Application,那么会出现多个用户同时通过一个Connection访问数据库的情况,虽然节省了建立连接的时间,但是访问数据库的速度就会变得非常慢。如果用Session,出现的问题就是,Session超时怎么办?如果把Session.Timeout设得很大,那用户离开之后,连接还会保留一段时间,也会带来额外的开销。  
              其实根本不用考虑这个问题,通过OLE   DB访问数据库,它会替你解决这个问题,OLE   DB有一个Resource   Pooling,它会代  
  理你的连接请求,然后把别人刚用过的连接给你接着用。(具体机制不再阐述,其实我也没搞太明白,嘻嘻)  
  1.2   Provider  
  可能没有多少人用过这个Property吧,它的缺省值是MSDASQL,还有MSIDXS和ADSDSOObject,但是在ADO2.0(见VS98)和  
  ADO2.1(见SQL7)里面提供了一些新的Provider:  
  MSDAORA   (OLE   DB   Provider   for   Oracle)  
  Microsoft.Jet.OLEDB.3.51(OLE   DB   Provider   for   Microsoft   Jet(   for   ACCESS))  
  SQLOLEDB(Microsoft   SQL   Server   OLE   DB   Provider)  
  如果你所用的数据库是这些的话,用这些新的Provider就可以不通过ODBC而直接访问数据库,提高的效率就可想而知了。  
  2   Command  
  2.1   CommandType  
  缺省值是adCmdUnknown,ADO会逐个判断你的CommandType,直到它认为合适为止,不建议采用。(在Recordset.Open和  
  Connection.Execute的时候也可以用)  
  adCmdText是照原样执行你的SQL语句,但是如果你的SQL   Language是以下几种的话,通过使用别的CommandType就可以提高  
  你的SQL语句执行效率  
  objCmd.Execute   "Select   *   from   table_name",   adCmdText可替换为objCmd.Execute   "table_name",adCmdTable  
  objCmd.Execute   "Exec   proceuure_name",adCmdText可替换为objCmd.Execute   "proceuure   _name",   adCmdStoredProc  
  还有很重要的一点就是,如果你的SQL语句没有返回记录集,如insert和update等,那么使用adExecuteNoRecords  
  (ADO2.0)可以减低系统开销(可以加到adCmdText   和adCmdStoredProc上,如adCmdStoredProc   +   adExecuteNoRecords)  
  还有adCmdTableDirect和adCmdFile(ADO2.0),我还不太清楚怎么用,adCmdFile可用于访问一个XML文件。  
  2.2   Prepared  
  如果你需要重复的执行类似的SQL语句,那么你可以预编译你的SQL语句,提高的效率也很可观  
  objCmd.CommandText   =   "SELECT   spell   from   TYPER.wordspell   where   word   =   ?   "  
  objCmd.Prepared   =   True  
  objCmd.Parameters.Append   objCmd.CreateParameter("word",   adVarChar,   ,   2)  
  For   i   =   1   To   Len(strName)  
  strChar   =   Mid(strName,   i,   1)  
  objCmd("word")   =   strChar  
  Set   objRS   =   objCmd.Execute  
  If   objRS.EOF   Then  
  strNamesame   =   strNamesame   &   strChar  
  Else  
  strNamesame   =   strNamesame   &   objRS("spell")  
  End   If  
  Next   ''i   =   1   To   Len(strName)  
  3   Recordset  
  3.1   LockType  
  缺省是adLockReadOnly,如果你不用修改数据,就不要改成adLockOptimistic之类的,否则也会减低速度和增加开销的  
  adLockReadOnly   >   adLockPessimistic   >   adLockOptimistic   >   adLockBatchOptimistic  
  3.2   CursorType  
  缺省是adOpenForwardOnly,如果你只用MoveNext   Method,也最好不要改,速度影响140%左右  
  adOpenForwardOnly   >   adOpenDynamic   >   adOpenKeyset   >   adOpenStatic  
  3.3   CursorLocation  
  缺省是adUseServer,其实不好,它可以随时反映数据库服务器上的改动,但是系统开销很大,而且需要维持和数据库服务  
  器的连接,但是在数据库服务器和Web   Server在一起的时候要快些。不过在adLockOptimistic的时候使我无法使用  
  RecordCount等Property。  
  使用用adUseClient的话,你可以对数据做再排序,筛选,shape等操作  
  如果对数据的实时性没有要求的话,尽量用adUseClient  
  4   其它  
  4.1   Early   bind  
  用ASP这一点就不用看了,如果用VB的话  
  Dim   objConn   As   ADODB.Connection   比   Set   objConn   =   CreateObject("ADODB.Connection")要好    
  4.2   ADO   2.1里的shape真是好玩  
  4.3   ADO   2.1可以用objRS.Fields.Append来建立一个Recordset  
  4.4   把Recordset的一列数据直接变成一个数组来操作速度快一些,但是系统开销要大一些