|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的server|分页|函数|数据比来MSDNMagazine上的一篇文章10TipsforWritingHigh-PerformanceWebApplications提到了无效的数据分页手艺对进步ASP.NET程序功能的主要性;并给出了一个完成数据分页的storedprocedure的例子,抄写以下:
CREATEPROCEDUREnorthwind_OrdersPaged
(
@PageIndexint,
@PageSizeint
)
AS
BEGIN
DECLARE@PageLowerBoundint
DECLARE@PageUpperBoundint
DECLARE@RowsToReturnint
--Firstsettherowcount
SET@RowsToReturn=@PageSize*(@PageIndex+1)
SETROWCOUNT@RowsToReturn
--Setthepagebounds
SET@PageLowerBound=@PageSize*@PageIndex
SET@PageUpperBound=@PageLowerBound+@PageSize+1
--Createatemptabletostoretheselectresults
CREATETABLE#PageIndex
(
IndexIdintIDENTITY(1,1)NOTNULL,
OrderIDint
)
--Insertintothetemptable
INSERTINTO#PageIndex(OrderID)
SELECT
OrderID
FROM
Orders
ORDERBY
OrderIDDESC
--Returntotalcount
SELECTCOUNT(OrderID)FROMOrders
--Returnpagedresults
SELECT
O.*
FROM
OrdersO,
#PageIndexPageIndex
WHERE
O.OrderID=PageIndex.OrderIDAND
PageIndex.IndexID>@PageLowerBoundAND
PageIndex.IndexID<@PageUpperBound
ORDERBY
PageIndex.IndexID
END
在SQLServer2000内里,因为没有一个无效的举行ranking操纵的办法,以是该例子先创立了一个有Identity字段的一时表,使用Identity字段的自增加特征,直接的为Orders表的每行按orderID逆序付与了一个行号,然后基于这个行号完成分页。
在SQLServer2000内里,因为体系供应了内建的ranking函数,为了给Orders表天生行号,我们不再必要使用Identity字段。
比方,使用SQLServer2000的ROW_NUMBER()函数,按orderID字段逆序分列,给Orders表天生行号的语句以下:
SELECTROW_NUMBER()OVER(ORDERBYorderedDESC)ASrownum,ordered
FROMOrders
ORDERBYrownumDESC
基于这些新的ranking函数,您能够跟便利的完成数据的分页操纵。
</p>优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件 |
|