ASP程式效能測試報告(六)
來源:互聯網
上載者:User
七、最好用哪種方法提取記錄集?
到目前為止我們一直通過建立Recordset對象提取記錄集,但是ADO也提供了間接的記錄集提取方法。下面的測試比較ADO__03.asp和直接從Connection對象建立記錄集(CONN_01.asp)這兩種方法:
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open Application("Conn")
Set objRS = objConn.Execute(Application("SQL"))
可以看到頁面開銷略有增加,單個記錄的顯示時間沒有變化。
下面我們再來看看從Command對象直接建立記錄集對象(CMD__02.asp):
Set objCmd = Server.CreateObject("ADODB.Command")
objCmd.ActiveConnection = Application("Conn")
objCmd.CommandText = Application("SQL")
Set objRS = objCmd.Execute
同樣,頁面開銷也略有增加,而單個記錄的顯示時間沒有本質的變化。後面這兩種方法在效能上的差異很小,但我們還有一個重要的問題需要考慮。
通過Recordset類建立記錄集時,我們能夠以最大的靈活性控制記錄集的處理方式。既然後面兩種方法未能有壓倒性的效能表現,我們主要還是考慮預設返回的遊標類型和記錄鎖定方式,對於某些場合來說預設值並不一定是最理想的。
因此,除非由於特殊的原因需要選擇後面兩種方法,否則我們建議考慮下面的規則:
l 通過ADODB.Recordset類執行個體化記錄集,以獲得最好的效能和靈活性。
八、是否應該使用本地記錄集?
ADO允許使用本地(用戶端)記錄集,此時查詢將提取記錄集內的所有資料,查詢完成後串連可以立即關閉,以後使用本地的遊標訪問資料,這為釋放串連帶來了方便。使用本地記錄集對於訪問那些要求資料離線使用的遠端資料服務非常重要,那麼,對於普通的應用它是否同樣有所協助?
下面我們加入CursorLocation屬性,並在開啟記錄集之後關閉了串連(CLIENT1.asp):
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = 2 ' adUseClient
objRS.ActiveConnection = Application("Conn")
objRS.LockType = 1 ' adLockReadOnly
objRS.Open Application("SQL")
objRS.ActiveConnection = Nothing