SQL 分页,不用存储过程。。。

a21999 2010-10-07 11:27:32
刚才查了下文档,不能用存储过程,只能使用TOP来分页;

贴一个分页算法,大家看看用TOP的效率如何,是否有更好的方式呢?

select * from( 
select top @pageSize * from
(
select top (@pageSize*@currentPage) * from page order by _id asc
)t1 order by _id desc
)t2 order by _id asc


如果有更好的方法也希望高手分享,但是必须是用TOP的SQL语句,因为不支持存储过程。。。谢谢大家了。
...全文
191 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
leiziaitudou 2010-10-08
  • 打赏
  • 举报
回复
select top "+maximumRows+" * from questioninfos where questioninfoid not in (select top "+(maximumRows*startRowIndex)+" questioninfoid from questioninfos
a21999 2010-10-08
  • 打赏
  • 举报
回复
时间不早了,尽管没有特别满意的,结贴,谢谢大家。
qq2013 2010-10-08
  • 打赏
  • 举报
回复
select top "+maximumRows+" * from questioninfos where questioninfoid not in (select top "+(maximumRows*startRowIndex)+" questioninfoid from questioninfos
winner2050 2010-10-07
  • 打赏
  • 举报
回复
用的是聚集索引,性能很高。
dongjinzhong 2010-10-07
  • 打赏
  • 举报
回复
存储过程不就是SQL么?有区别么
浮生若梦丶 2010-10-07
  • 打赏
  • 举报
回复
kkbac 2010-10-07
  • 打赏
  • 举报
回复


jf/
lqkankan 2010-10-07
  • 打赏
  • 举报
回复
ROW_NUMBER() OVER 是2005的 2000的 怎么办?
q107770540 2010-10-07
  • 打赏
  • 举报
回复

SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)
wuyq11 2010-10-07
  • 打赏
  • 举报
回复
LINQ skip take
SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)
a21999 2010-10-07
  • 打赏
  • 举报
回复
感谢如梦和tim,都写的很好,
可惜。。。
我的情况不能用LINQ也不支持ROW_NUMBER,
之前,我都把LINQ TO CE自己实现了,悲剧的是SP那边不支持。。。

谢谢大家,我再琢磨琢磨这个事情。。。
daifangci 2010-10-07
  • 打赏
  • 举报
回复
select top 10 from table where id not in(select top " + (pageindex - 1) * 10 + " id from table order by id DESC)
pageindex 是当前页哈,就是你要的sql分页呀
种草德鲁伊 2010-10-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dongjinzhong 的回复:]

存储过程不就是SQL么?有区别么
[/Quote]

存储过程是编译过的,如果在里面用exec之类的执行sql,那和普通的字符串也没啥区别了。
z289830131 2010-10-07
  • 打赏
  • 举报
回复
lz和ls的都不错 mark...

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧