提高ASP性能的最佳选择(续二)

作者:袖梨 2022-07-02
(作者:青苹果工作室编译 )
当使用一个记录集时,是否应该创建一个单独的Connection对象?
  要想正确回答这个问题,需要在两个不同情况下检验测试结果:第一是每页执行一个数据库处理的情况,第二是每页执行多个数据库处理的情况。
  在前面的例子中,我们已经创建了一个单独的Connection对象,并将它传递到记录集的ActiveConnection 属性。但是也有可能仅仅把连接字符串传递到这个属性中,从而可以避免一个额外的步骤,即在脚本( ADO__03.asp )中例示和配置一个单独的组件:
  objRS.ActiveConnection = Application("Conn")

  尽管我们仍然在记录集中创建了一个连接,但它是在非常优化的情况下创建的,所以刚一开始我们就看到启动时间比以前的测试减少了23%,同预料中一样,同每个记录的显示时间几乎没有什么差别。
  因此,我们的第二个规则是:
  * 当使用一个单个记录集时,将连接字符串传递到ActiveConnection属性中。
  下面要确定当在一个页面上创建多个记录集时,这个逻辑是否依然成立。为测试这个情况,我引入了FOR 循环,将前面的例子重复10次。在这个测试中,我们还将研究3种选择:
  第一,我们在每个循环中创建并销毁Connection 对象( ADO__04.asp ):
  Dim i
  For i = 1 to 10
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open Application("Conn")
  Set objRS = Server.CreateObject("ADODB.Recordset")
  objRS.ActiveConnection = objConn
  objRS.CursorType = 0 'adOpenForwardOnly
  objRS.LockType = 1 'adLockReadOnly
  objRS.Open Application("SQL")
  If objRS.EOF Then
  Response.Write("No Records Found")
  Else
  'write headings
  ...
  'write data
  ...
  End If
  objRS.Close
  Set objRS = Nothing
  objConn.Close
  Set objConn = Nothing
  Next
  第二,在循环外创建一个单独的Connection 对象,并与每个记录集共享它( ADO__05.asp ):
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open Application("Conn")

相关文章

精彩推荐