探討一下rs(0)與rs("fieldname")的執(zhí)行效率
發(fā)表時間:2024-02-21 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]事實(shí)已證明了用索引數(shù)(index number)訪問記錄集元素要比用字段名稱(field name)快出幾倍.按字符串查詢要比按整數(shù)查詢花去更多的時間和系統(tǒng)資源.因此,在遍歷數(shù)據(jù)庫時應(yīng)注意下面的兩個問題: 1.盡量最少使用select * 這樣的語句 在遍歷某表里少量的字段時,se...
事實(shí)已證明了用索引數(shù)(index number)訪問記錄集元素要比用字段名稱(field name)快出幾倍.按字符串查詢要比按整數(shù)查詢花去更多的時間和系統(tǒng)資源.
因此,在遍歷數(shù)據(jù)庫時應(yīng)注意下面的兩個問題:
1.盡量最少使用select * 這樣的語句
在遍歷某表里少量的字段時,select * 語句的執(zhí)行效率是很低的,因?yàn)樵趫?zhí)行這樣的語句的時候其實(shí)執(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列表的字段順序,那么在賦值時要特別注意.