抽取10萬條資料,想起GetRows()

來源:互聯網
上載者:User

現有10W條資料,Access資料庫儲存

通過正常提取:

<%
Set conn= Server.CreateObject("ADODB.Connection")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db2.mdb")
conn.Open connstr

Set rs = Server.CreateObject ("ADODB.Recordset")
sql = "Select * from people order by id desc"
rs.Open sql,conn,1,1

Do While Not rs.EOF
Response.write rs("id")&" | "
rs.MoveNext
Loop
%>

http://www.cnbruce.com/test/getrows/show1.asp

耗時3,250.000毫秒,總測試平均值在3秒左右

==========================================================

使用預存程序提取:

<%
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db2.mdb")

cmd.ActiveConnection = conn
cmd.CommandText = "Select * from people order by id desc"
Set rs = cmd.Execute

Do While Not rs.EOF
Response.write rs("id")&" | "
rs.MoveNext
Loop
%>

http://www.cnbruce.com/test/getrows/show2.asp

耗時2,187.500毫秒,總測試平均值在2秒左右

=========================================================

以上兩種均不能徹底解決執行時間漫長的問題,主要原因即是迴圈每次都須向資料庫抽取記錄(Command速度相對較快)

那麼使用GetRows()方法呢:

<%
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db2.mdb")
cmd.ActiveConnection = conn
cmd.CommandText = "Select * from people order by id desc"
Set rs = cmd.Execute
rsArray = rs.GetRows()

For i = 0 To UBound(rsArray, 2)
Response.Write rsArray(0, i)&" | "
Next
%>

http://www.cnbruce.com/test/getrows/show3.asp

耗時187.500毫秒,總測試平均值在0.2秒左右

GetRows()方法是將資料從 Recordset 複製到二維數組中,這是一個二維數組,第一個下標識別欄位,第二個則標識記錄號

所以rsArray = rs.GetRows()
rsArray(0, 0)就表示記錄集第一行的第一欄位值
rsArray(1, 0)就表示記錄集第一行的第二欄位值

數組的資料是儲存在記憶體中的,這就從根本上解決了每次顯示記錄還需向資料庫請求的麻煩。

另外,關於GetRows()的詳細介紹和用法,這裡有份內容參考

http://www.51windows.net/pages/Ado/mdmthgetrows.htm

http://www.blueidea.com/tech/program/2005/2853.asp

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.