作者casearchu (咖啡)
看板C_Sharp
标题Re: [问题] 上一页/下一页之SQL探讨?
时间Thu Jun 19 23:29:32 2008
※ 引述《tomex (Tomex Ou)》之铭言:
: ASP.NET网页设计里,
: 原以为观看detail资料的下方有个上一页/下一页很简单
: 发现ASP.NET的Paper都是丢所有资料Datable
: 我嫌这样资料量太大(毕竟只有1笔而己)
: 改用手写下sql方式。
: 以为多下两道大於或小於该key值的sql就好
: 但是考量此上/下页的顺序,
: 是根据前页资料列表的排序规则(可能多栏排序)
: 细想之下,发现真的不简单...
: 因为sql表中的资料并不一定连续。
: 请问该如何在不查询所有资料下
: 得到指定笔项目的上/下笔资料呢?
: 难道最终仍是得把所有资料取出吗?
: 不甘心呀!!
可以将上一页的排序规则Keep到下一页 存入ViewState中
之後Detail Page查的时候 依照之前的排序取出
SQL 2005前 取范围的资料的方法
Select * FROM (Select Top 40000 * from Table Order by 排序栏位 ) A where Not
Exists ( Select * From (Select top 20000 id from Table Order by 排序栏位
) B where A.id=B.id )
SQL 2005後
SELECT * FROM (
SELECT *,ROW_NUMBER() OVER (ORDER BY 排序栏位 DESC) AS RowNumber
FROM Table ) T
WHERE T.RowNumber BETWEEN 20000 AND 40000
第一段的速度较快...Row_number()比较慢
如果你有用LINQ 那又是另外的语法了...
--
不知道我是不是有理解错误......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.28.55
1F:推 tomex:因为我是用get方式到另一页,也不想把页码传入(url太杂) 06/20 09:47
2F:推 tomex:後来决定还是把所有key取出作过滤,解决这样的需求 06/20 09:48
3F:推 tomex:至少它比datasource或完全的datatable省资料罗! 06/20 09:48
4F:推 teyou:唉~细看需求还是不是很了解.. 06/20 18:33