首页 新闻 搜索 专区 学院

aspnetpager生成的分页存储过程效率怎么样?

0
悬赏园豆:10 [已解决问题] 解决于 2010-03-07 13:31
代码
CREATE PROCEDURE P_GetPagedOrders2005
@startIndex INT,
@pageSize INT
AS
begin
WITH orderList AS (
SELECT ROW_NUMBER() OVER (ORDER BY O.orderid DESC)AS Row, O.orderid,O.orderdate,O.customerid,C.CompanyName,E.FirstName+' '+E.LastName as EmployeeName
from orders O
left outer join Customers C
on O.CustomerID=C.CustomerID
left outer join Employees E
on O.EmployeeID=E.EmployeeID)--这里是把所有数据都读出来,每次执行都会读取数据,这个结果集会缓存吗?会不会影响效率

SELECT orderid,orderdate,customerid,companyName,employeeName
FROM orderlist
WHERE Row between @startIndex and @startIndex+@pageSize-1
end

 

leo刘的主页 leo刘 | 初学一级 | 园豆:156
提问于:2010-03-05 11:53
< >
分享
最佳答案
0

这个分页很不错的啊。

 

有查询条件就麻烦了。

分页参考:http://www.cnblogs.com/huxj/archive/2010/02/01/1660738.html

收获园豆:2
steven hu | 小虾三级 |园豆:542 | 2010-03-07 13:08
其他回答(4)
0

2005自带的分页功能,性能还不错,只能这么说,因为我也用这个

收获园豆:2
路过秋天 | 园豆:4746 (老鸟四级) | 2010-03-05 11:59
0

还不错。这个是在数据库的存储过程中的,可谓一次编译,多次使用。相比asp.net中DataView控件中自带的翻页效率高多了。

收获园豆:2
风影极光 | 园豆:1573 (小虾三级) | 2010-03-05 12:34
0

补充你问的这个结果及会缓存吗?不会。存储过程只是放在数据库中,第一次调用时会对该存储过程进行编译,下次在调用时会直接调用编译后的存储过程,也就是存储过程本身是有缓存的,可以这么理解。但是你查询的结果集是不会缓存的。

收获园豆:2
西越泽 | 园豆:10633 (专家六级) | 2010-03-05 13:23
0

如果能够在where或者order后的字段中建立索引的话!!效率还是很高的!

收获园豆:2
langford | 园豆:710 (小虾三级) | 2010-03-05 14:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册