ASP開發中,使用普通的分頁方法,在數據量小的時候,看不出來速度有何影響。當網站的數據量超過十萬條以的時候,使用這種方法分頁的時候,速度就可以看出來。於是必須換種方法去解決這種十萬條以上的數據量的分頁方法。
新的分頁方法:
<!-- #include file="conn.ASP" -->
<style>
td{
font-size:12px;
}
</style>
<TABLE border=1 cellspacing=0 cellpadding=0 width=500>
<TR>
<td align="center">ID</td>
<TD height="22" align="center">標題</TD>
<TD align="center">時間</TD>
</TR>
<%
'十萬條以上數據的分頁的方法
'作者:wangsdong
'來源:www.ASPprogram.cn
'原創文件,轉載請保留此信息,謝謝
keyword=request("keyWord")
page=request("page")
If page="" Or Not IsNumeric(page) then page=1 Else page=CInt(page)
page_size=2
q1=" and status>0"
If keyword<>"請輸入關鍵詞" and keyWord<>"" then
q1=q1&" and title like '%"&keyWord&"%'"
end If
if page>1 then
sql="select top "&page_size&" id,title,content,updatetime from news where 1=1 and id<(select min(id) from (select top "&(page-1)*page_size&" id from news where status>0"&q1&" order by id desc) as c1)"
else
sql="select top "&page_size&" id,title,content,updatetime from news where 1=1"
end if
sql=sql&q1&" order by id desc"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
do while not rs.eof
id=rs("id")
title=rs("title")
content=rs("content")
updatetime=rs("updatetime")
'*************循環的內容開始************************
%>
<TR>
<td><%=id%></td>
<TD height="22"><%=title%></TD>
<TD><%=updatetime%></TD>
</TR>
<%
'*************循環的內容結束************************
rs.movenext
loop
end if
rs.close
%>
<tr><td colspan="3" height="30" align="center">
<%
'分頁開始
'計算總頁數
page_count=1
sql="select count(*) as t from news where 1=1"&q1
rs.open sql,conn,1,1
if rs.eof then
else
recordset_count=rs("t")
if recordset_count mod page_size=0 then
page_count=recordset_count\page_size
else
page_count=recordset_count\page_size+1
end if
end if
rs.close
'分頁,分頁效果:首頁 上一頁 ... 2 3 4 5 6 7 ... 下一頁 最後一頁
if page=1 then
response.write "首頁 上一頁 "
else
response.write "<a href=""?page=1&keyword="&keyword&""">首頁</a> <a href=""?page="&page-1&"&keyword="&keyWord&""">上一頁</a> "
end if
if page>4 then
s=page-3
response.write "..."
else
s=1
end if
if page<=page_count-3 then
e=page+3
else
e=page_count
end if
for i=s to e
if i=page then
response.write "<font color=""#FF8000""><b>"&i&"</b></font> "
else
response.write "<a href=""?page="&i&"&keyword="&keyWord&""">"&i&"</a> "
end if
next
if page<page_count-3 then
response.write "..."
end if
if page=CInt(page_count) then
response.write "<span>下一頁 最後一頁</span>"
else
response.write "<span><a href=""?page="&page+1&"&keyword="&keyword&""">下一頁</a> <a href=""?page="&page_count&"&keyword="&keyWord&""">最後一頁</a></span>"
end if
%>
</td></tr>
</TABLE>