明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

探討一下rs(0)與rs("fieldname")的執(zhí)行效率

[摘要]事實已證明了用索引數(shù)(index number)訪問記錄集元素要比用字段名稱(field name)快出幾倍.按字符串查詢要比按整數(shù)查詢花去更多的時間和系統(tǒng)資源.因此,在遍歷數(shù)據(jù)庫時應(yīng)注意下面的兩個問題: 1.盡量最少使用select * 這樣的語句 在遍歷某表里少量的字段時,se...
事實已證明了用索引數(shù)(index number)訪問記錄集元素要比用字段名稱(field name)快出幾倍.按字符串查詢要比按整數(shù)查詢花去更多的時間和系統(tǒng)資源.
因此,在遍歷數(shù)據(jù)庫時應(yīng)注意下面的兩個問題:
    1.盡量最少使用select * 這樣的語句
      在遍歷某表里少量的字段時,select * 語句的執(zhí)行效率是很低的,因為在執(zhí)行這樣的語句的時候其實執(zhí)行了兩次查詢,在執(zhí)行select語句前,首先必須查詢系統(tǒng)表來確定名稱和數(shù)據(jù)類型。
    2.在使用記錄集rs值前,應(yīng)該把它賦值給本地變量.
      這尤其適用于操作Text/Memo字段.
我發(fā)現(xiàn)在"read mode"下調(diào)用本地變量比從記錄集中從新調(diào)用rs值要略快,特別是在多次recall recordset時,效果會更明顯.
下面來看一個ASP的例子:
<%
    ' 創(chuàng)建數(shù)據(jù)庫連接.
    set rs = conn.execute("exec sp_getRecords")
    if not rs.eof then
        do while not rs.eof

            id = rs(0) ' 把rs值賦給本地變量
            fname = rs(1)  
            lname = rs(2)  

            ' ... 使用本地變量處理工作

            rs.movenext
        loop
    end if
    ' ... 釋放變量,結(jié)束連接.
%>
最后要注意:如果在SQL語句或存儲過程中改變了select列表的字段順序,那么在賦值時要特別注意.